Sfoglia il codice sorgente

Example added for Random module: TwoDice

Arthur Yefimov 3 anni fa
parent
commit
29dd7f26db
1 ha cambiato i file con 54 aggiunte e 0 eliminazioni
  1. 54 0
      Programs/TwoDice.Mod

+ 54 - 0
Programs/TwoDice.Mod

@@ -0,0 +1,54 @@
+MODULE TwoDice;
+IMPORT Random, Out;
+CONST
+  step = 1000;
+  eps = 1.0E-6;
+TYPE
+  Result = ARRAY 13 OF REAL;
+
+PROCEDURE Finish(old, new: Result): BOOLEAN;
+VAR i: INTEGER;
+BEGIN
+  i := 2;
+  WHILE (i # 13) & (ABS(old[i] - new[i]) / new[i] <= eps) DO
+    INC(i)
+  END
+RETURN i = 13 END Finish;
+
+PROCEDURE Do;
+VAR counter: ARRAY 13 OF INTEGER;
+  freq0, freq: Result;
+  i, n, a: INTEGER;
+  sum: REAL;
+BEGIN
+  FOR i := 2 TO 12 DO
+    counter[i] := 0;
+    freq[i] := 0.0
+  END;
+  n := 0;
+
+  REPEAT
+    FOR i := 1 TO step DO
+      a := 2 + Random.Int(6) + Random.Int(6);
+      INC(counter[a]);
+      INC(n)
+    END;
+    FOR i := 2 TO 12 DO
+      freq0[i] := freq[i];
+      freq[i] := counter[i] / n
+    END
+  UNTIL Finish(freq0, freq);
+
+  sum := 0.0;
+  FOR i := 2 TO 12 DO
+    sum := sum + freq[i];
+    Out.Int(i, 2); Out.String(') ');
+    Out.RealFix(freq[i], 0, 4); Out.Ln
+  END;
+  Out.String('Сумма ');
+  Out.RealFix(sum, 0, 4); Out.Ln
+END Do;
+
+BEGIN
+  Do
+END TwoDice.