home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9303 / monte / zufall.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1993-06-14  |  2.1 KB  |  73 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     ZUFALL.PAS                         *)
  3. (*        Veschiedene Zufallszahlen-Generatoren           *)
  4. (*        (c) 1993 Dr.Lothar Wenzel & DMV-Verlag          *)
  5. (* ------------------------------------------------------ *)
  6. PROGRAM Zufall;
  7.  
  8. CONST
  9.   n           = 1002;      { Basiszahl }
  10.   n2          = n DIV 2;
  11.   Anzahl      = 3000;      { Anzahl der Zufallszahlen }
  12.   c           = 22;        { Ergänzung für Formel 2 }
  13.   s           = 27;        { Ergänzung für Formel 3 }
  14.  
  15. VAR
  16.   i, j        : LongInt;
  17.   z1,z2,z3,z4 : LongInt;   { berechnete Zufallszahlen }
  18.   z11,z12     : LongInt;   { Hilfszahlen für Fibonacci }
  19.   z21         : LongInt;   { Hilfszahl für 2.Algorithmus }
  20.   z31         : LongInt;   { Hilfszahl für 3.Algorithmus }
  21.   m1,m2,m3,m4 : REAL;      { Mittelwerte }
  22.   s1,s2,s3,s4 : REAL;      { Standardabweichung }
  23.  
  24. BEGIN
  25.   z11 := 1; z12 := 1;
  26.   z21 :=1;
  27.   z31 :=1;
  28.   m1  :=0;  m2 := 0; m3 := 0; m4 := 0;
  29.   s1  :=0;  s2 := 0; s3 := 0; s4 := 0;
  30.  
  31.   FOR i := 1 TO Anzahl DO BEGIN
  32.     z1 := ((z11+z12) MOD (n));  { Formel für Fibonacci }
  33.     z2 := (((n+1)*z21+c) MOD (n));
  34.     z3 := ((s*z31) MOD (n));
  35.     z4 := Random(n);
  36.  
  37.     m1 := m1 + z1;
  38.     m2 := m2 + z2;
  39.     m3 := m3 + z3;
  40.     m4 := m4 + z4;
  41.  
  42.     s1 := s1 + z1*z1;
  43.     s2 := s2 + z2*z2;
  44.     s3 := s3 + z3*z3;
  45.     s4 := s4 + z4*z4;
  46.   {
  47.     WriteLn(Z1:10, Z2:10, Z3:10, Z4:10);
  48.   }
  49.     z11 := z12; z12 := z1;
  50.     z21 := z2;
  51.     z31 := z3;
  52.   END;
  53.   WriteLn;
  54.   WriteLn;
  55.  
  56.   m1 := m1/Anzahl;
  57.   m2 := m2/Anzahl;
  58.   m3 := m3/Anzahl;
  59.   m4 := m4/Anzahl;
  60.  
  61.   WriteLn('Mittelwerte der Zufallsreihen');
  62.   WriteLn(m1:10:3, m2:10:3, m3:10:3, m4:10:3);
  63.   s1 := Sqrt(s1 - Anzahl*m1*m1)/Sqrt(Anzahl);
  64.   s2 := Sqrt(s2 - Anzahl*m2*m2)/Sqrt(Anzahl);
  65.   s3 := Sqrt(s3 - Anzahl*m3*m3)/Sqrt(Anzahl);
  66.   s4 := Sqrt(s4 - Anzahl*m4*m4)/Sqrt(Anzahl);
  67.   WriteLn('Standardabweichungen der Zufallsreihen');
  68.   WriteLn(s1:10:3, s2:10:3, s3:10:3, s4:10:3);
  69.   ReadLn;
  70. END.
  71. (* ------------------------------------------------------ *)
  72. (*                Ende von ZUFALL.PAS                     *)
  73.