changed random function, added CSP module
This commit is contained in:
@@ -1,11 +1,17 @@
|
||||
IMPLEMENTATION MODULE random;
|
||||
|
||||
VAR seed: CARDINAL;
|
||||
FROM Unix IMPORT getpid, time;
|
||||
TYPE index = [0..54];
|
||||
|
||||
VAR X: ARRAY index OF CARDINAL;
|
||||
k, j: index;
|
||||
|
||||
PROCEDURE Random(): CARDINAL;
|
||||
BEGIN
|
||||
seed := seed * 77 + 153;
|
||||
RETURN seed;
|
||||
IF k+1 > 54 THEN k := 0; ELSE INC(k) END;
|
||||
IF j+1 > 54 THEN j := 0; ELSE INC(j) END;
|
||||
X[k] := X[k] + X[j];
|
||||
RETURN X[k]
|
||||
END Random;
|
||||
|
||||
PROCEDURE Uniform (lwb, upb: CARDINAL): CARDINAL;
|
||||
@@ -15,5 +21,11 @@ BEGIN
|
||||
END Uniform;
|
||||
|
||||
BEGIN
|
||||
seed := 253B;
|
||||
X[0] := time(NIL);
|
||||
X[0] := CARDINAL(getpid()) * X[0];
|
||||
FOR k := 1 TO 54 DO
|
||||
X[k] := X[k-1] * 1297;
|
||||
END;
|
||||
k := 54;
|
||||
j := 30;
|
||||
END random.
|
||||
|
||||
Reference in New Issue
Block a user