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.