Implementation of the SplitMix64 uniform random number generator.
Provides a convenient safety wrapper for uniform random number generators that should guarantee reference-type, input range semantics, and is usable in @safe code if the underlying uniform RNG is itself @safe.
Implementation of the xoroshiro128+ uniform random number generator.
Implementation of the xorshift1024* uniform random number generator.
Xorshift uniform random number generators were introduced by George Marsaglia in 2003, as a means of providing fast and lightweight pseudo-random number generation with high statistical quality.
This package complements the existing xorshift generators in phobos' std.random with implementations of some of the extended family of generators that other researchers have developed from Marsaglia's essential ideas. Typically these address statistical flaws found with the original xorshift designs.
Generators in the package are implemented as input ranges with the postblit and default constructors disabled. This should help to avoid accidental statistical correlations caused by unintended copy-by-value of generator state, and ensure that generators cannot be initialized unseeded.