home *** CD-ROM | disk | FTP | other *** search
- (* --------------------------------------------------------- *)
- (* ZUFTEST.PAS *)
- (* Test eines Zufallzahlengenerators durch die Berechnung *)
- (* der Zahl PI nach der Regentropfenmehtode *)
- (* --------------------------------------------------------- *)
-
- PROGRAM berechne_pi;
-
- CONST
- max_zufall = 32767; (* groesstmoegl. INTEGER-Zufallszahl *)
- r = 32.767; (* r = max_zufall / 1000 *)
-
- VAR
- im_kreis,
- i,
- max_tropf: INTEGER;
- Pi,
- r_quad : REAL;
-
- (* --------------------------------------------------------- *)
- (* Zufallszahl aus [0..(max_zufall/1000)]: *)
- (* hier beispielhaft fuer Turbo-Pascal *)
-
- FUNCTION zufallszahl: REAL;
-
- BEGIN
- zufallszahl := Random(max_zufall) / 1000.0;
- END;
-
- (* --------------------------------------------------------- *)
-
- FUNCTION tropfen_im_kreis: BOOLEAN;
-
- VAR
- x_quad,
- y : REAL;
-
- BEGIN
- x_quad := Sqr(zufallszahl);
- y := zufallszahl;
- tropfen_im_kreis := (Sqrt(r_quad - x_quad) >= y);
- END;
-
- (* --------------------------------------------------------- *)
-
- BEGIN
- Randomize;
- r_quad := Sqr(r);
- WriteLn; WriteLn;
- Write('Berechnung der Zahl "Pi" durch Zufallszahlengenera');
- Write('tor! Wieviel Tropfen ? '); ReadLn(max_tropf);
- im_kreis := 0;
- FOR i := 1 TO max_tropf DO
- BEGIN
- IF tropfen_im_kreis THEN im_kreis := Succ(im_kreis);
- IF i MOD 50 = 0 THEN Write('.');
- END;
- Pi := 4.0 * im_kreis / max_tropf;
- WriteLn; WriteLn('Pi = ', Pi:1:10, ' ');
- END.