1 /** 2 * Xorshift uniform random number generators were introduced by George 3 * Marsaglia in 2003, as a means of providing fast and lightweight 4 * pseudo-random number generation with high statistical quality. 5 * 6 * This package complements the existing xorshift generators in phobos' 7 * `std.random` with implementations of some of the extended family of 8 * generators that other researchers have developed from Marsaglia's 9 * essential ideas. Typically these address statistical flaws found 10 * with the original xorshift designs. 11 * 12 * Generators in the package are implemented as input ranges with the 13 * postblit and default constructors disabled. This should help to 14 * avoid accidental statistical correlations caused by unintended 15 * copy-by-value of generator state, and ensure that generators cannot 16 * be initialized unseeded. 17 * 18 * Authors: 19 * $(LINK2 http://braingam.es/, Joseph Rushton Wakeling) 20 * 21 * Copyright: 22 * Written in 2016 by Joseph Rushton Wakeling. 23 * 24 * License: 25 * $(LINK2 https://creativecommons.org/publicdomain/zero/1.0/legalcode, Creative Commons CC0) 26 * (public domain) 27 */ 28 module dxorshift; 29 30 public import dxorshift.splitmix64; 31 public import dxorshift.xoroshiro128plus; 32 public import dxorshift.xorshift1024star; 33 34 unittest 35 { 36 import std.random : isUniformRNG; 37 assert(isUniformRNG!SplitMix64); 38 assert(isUniformRNG!Xoroshiro128plus); 39 assert(isUniformRNG!Xorshift1024star); 40 }