2.19.3 xoroshiro128** Generator

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.

Function: kernel:random-state-jump &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.