home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 08 / zuftest.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1987-07-10  |  1.6 KB  |  60 lines

  1. (* --------------------------------------------------------- *)
  2. (*                     ZUFTEST.PAS                           *)
  3. (*   Test eines Zufallzahlengenerators durch die Berechnung  *)
  4. (*   der Zahl PI nach der Regentropfenmehtode                *)
  5. (* --------------------------------------------------------- *)
  6.  
  7. PROGRAM berechne_pi;
  8.  
  9. CONST
  10.   max_zufall = 32767;   (* groesstmoegl. INTEGER-Zufallszahl *)
  11.   r          = 32.767;              (* r = max_zufall / 1000 *)
  12.  
  13. VAR
  14.   im_kreis,
  15.   i,
  16.   max_tropf: INTEGER;
  17.   Pi,
  18.   r_quad   : REAL;
  19.  
  20. (* --------------------------------------------------------- *)
  21. (*          Zufallszahl aus [0..(max_zufall/1000)]:          *)
  22. (*            hier beispielhaft fuer Turbo-Pascal            *)
  23.  
  24. FUNCTION zufallszahl: REAL;
  25.  
  26. BEGIN
  27.   zufallszahl := Random(max_zufall) / 1000.0;
  28. END;
  29.  
  30. (* --------------------------------------------------------- *)
  31.  
  32. FUNCTION tropfen_im_kreis: BOOLEAN;
  33.  
  34. VAR
  35.   x_quad,
  36.   y     : REAL;
  37.  
  38. BEGIN
  39.   x_quad := Sqr(zufallszahl);
  40.   y := zufallszahl;
  41.   tropfen_im_kreis := (Sqrt(r_quad - x_quad) >= y);
  42. END;
  43.  
  44. (* --------------------------------------------------------- *)
  45.  
  46. BEGIN
  47.   Randomize;
  48.   r_quad := Sqr(r);
  49.   WriteLn; WriteLn;
  50.   Write('Berechnung der Zahl "Pi" durch Zufallszahlengenera');
  51.   Write('tor!  Wieviel Tropfen ? ');  ReadLn(max_tropf);
  52.   im_kreis := 0;
  53.   FOR i := 1 TO max_tropf DO
  54.   BEGIN
  55.     IF tropfen_im_kreis THEN im_kreis := Succ(im_kreis);
  56.     IF i MOD 50 = 0 THEN Write('.');
  57.   END;
  58.   Pi := 4.0 * im_kreis / max_tropf;
  59.   WriteLn;  WriteLn('Pi = ', Pi:1:10, ' ');
  60. END.