/** * 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. * * Authors: * $(LINK2 http://braingam.es/, Joseph Rushton Wakeling) * * Copyright: * Written in 2016 by Joseph Rushton Wakeling. * * License: * $(LINK2 https://creativecommons.org/publicdomain/zero/1.0/legalcode, Creative Commons CC0) * (public domain) */ module dxorshift; public import dxorshift.splitmix64; public import dxorshift.xoroshiro128plus; public import dxorshift.xorshift1024star; unittest { import std.random : isUniformRNG; assert(isUniformRNG!SplitMix64); assert(isUniformRNG!Xoroshiro128plus); assert(isUniformRNG!Xorshift1024star); }