123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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.
|