27 lines
916 B
Plaintext
27 lines
916 B
Plaintext
import <Utilities/Random.sl>;
|
|
|
|
main(args(2)) :=
|
|
let
|
|
bsdRandomGenerator := newRandomGenerator(0, 0, 2147483647, bsdNext);
|
|
msRandomGenerator := newRandomGenerator(0, 0, 32767, msNext);
|
|
|
|
// Create a random sequence with each one of the generators
|
|
numbers := getRandomSequence([bsdRandomGenerator, msRandomGenerator], 10).Value;
|
|
in
|
|
"BSD Values: " ++ toString(numbers[1]) ++
|
|
"\nMS Values: " ++ toString(numbers[2]);
|
|
|
|
bsdNext(RG) :=
|
|
let
|
|
newSeed := ((1103515245 -> int64 * RG.Seed + 12345) mod 2147483648) -> int32;
|
|
in
|
|
(Value : newSeed,
|
|
Generator : (Seed : newSeed, RandomMin : RG.RandomMin, RandomMax : RG.RandomMax, NextFunction : RG.NextFunction));
|
|
|
|
msNext(RG) :=
|
|
let
|
|
newSeed := ((214013 -> int64 * RG.Seed + 2531011) mod 2147483648) -> int32;
|
|
in
|
|
(Value : newSeed / 65536,
|
|
Generator : (Seed : newSeed, RandomMin : RG.RandomMin, RandomMax : RG.RandomMax, NextFunction : RG.NextFunction));
|