Previous: random generators borosh, Up: random generators [Index]
This is a combined multiple recursive generator. The algorithm was derived from:16
P. L’Ecuyer. “Combined Multiple Recursive Random Number Generators”. Operations Research, 44, 5 (1996), 816–822.
the following bindings are exported by the (vicare crypto
randomisations cmrg)
library.
Build and return a new randomness source using a CMRG generator.
The state returned by random-source-state-ref
is a Scheme vector
of length 7, whose first value is the symbol
random-source-state/cmrg
. The other values are integers
representable with 32 bits.
The random-source-seed!
function for this generator, must be
applied to a numbers maker returning integers representable with
32 bits.
The sequence is:
N = (X0 - Y0) mod m1
where the two underlying generators X and Y are:
X0 = (A1 X1 + A2 X2 + A3 X3) mod M1 Y0 = (B1 Y1 + B2 X2 + B3 Y3) mod M2
with coefficients:
A1 = 0 A2 = 63308 A3 = -183326 B1 = 86098 B2 = 0 B3 = -539608
and moduli:
M1 = 2^31 - 1 = 2147483647 M2 = 2^31 - 2000169 = 2145483479
According to the paper the initial values for X must lie in the
range 0 <= X < M1 and the initial values for Y must lie in
the range 0 <= Y < M2, with at least one non–zero value.
(vicare crypto randomisations cmrg)
initialises the generator
with:
X1 = 7 X2 = 17 X3 = 47 Y1 = 3 Y2 = 13 Y3 = 43
and the seeding procedure implemented by the randomness source (through
random-source-seed!
) will extract random numbers from the given
generator until it is 0 < X < M1 and 0 < Y < M2.
Previous: random generators borosh, Up: random generators [Index]