On supported platforms, the random number generator is the
xoroshiro128**
. This supersedes the xoroshiro128+
generator. (See
Cmucl
issue #276 for the
reasons for replacing the xoroshiro128+
generator.)
This is a Lisp implementation of the generator xoroshiro128**
by David Blackman and Sebastiano Vigna. See
https://prng.di.unimi.it/xoroshiro128starstar.c for further
details.
When CMUCL starts up, *random-state*
is initialized by
reading 4 32-bit words from /dev/urandom
, when available. If
/dev/urandom
is not available, the universal time is used to
initialize *random-state*
. The initialization is done is using
splitmix64 with
get-universal-time
.
&optional
(rng-state *random-state*) ¶Jump the rng-state. This is equivalent to 2^{64} calls to the
xoroshiro128**
generator. It can be used to generate 2^{64}
non-overlapping subsequences for parallel computations.