dxorshift

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.

Modules

splitmix64
module dxorshift.splitmix64

Implementation of the SplitMix64 uniform random number generator.

xoroshiro128plus
module dxorshift.xoroshiro128plus

Implementation of the xoroshiro128+ uniform random number generator.

xorshift1024star
module dxorshift.xorshift1024star

Implementation of the xorshift1024* uniform random number generator.

Public Imports

dxorshift.splitmix64
public import dxorshift.splitmix64;
dxorshift.xoroshiro128plus
public import dxorshift.xoroshiro128plus;
dxorshift.xorshift1024star
public import dxorshift.xorshift1024star;

Meta