Details

MINSTD is a Lehmer generator found in the C++ standard. This uses the revised constants proposed by Park and Miller in the 1980s, along with a more complex implementation that avoids 64-bit mathematics.

These changes make quite a large difference, as this generator passes nearly every test. Even the Plot test shows a decent distribution of outputs, though it could be better.

Pseudocode


// This code is adapted from MINSTD's implementation
// in the GNU Scientific Library.
//
// https://www.gnu.org/software/gsl/

			
// The current state value
state = 1138;

// Our constants
a = 16807;
M = 2147483647;
q = 127773;
r = 2836;

// random number generator
function RandomNumber() {

	// Save the state
	x = state;

	// Run the math
	h = int( x / q );
	t = a * (x - (h * q)) - (h * r);

	if (t < 0) {
		t = t + M;
	}
	
	// Save the new value
	state = t;
	
	// And return it
	return state;

}
			


Test Results

Period Length Test

SeedPeriod LengthResult
113864000Passed
6553564000Passed
867530964000Passed
1677721664000Passed
12345678964000Passed
Minimum to Pass: 64,000

Plot Test

 

Count the 1s Test

Seed% Bits that are 1sResult
113850.00%Passed
6553549.97%Passed
867530950.14%Passed
1677721649.83%Passed
12345678949.83%Passed
Minimum to Pass: 45%

Dartboard Test

SeedDarts PlacedResult
11387014Passed
655357000Passed
86753096979Passed
167772166969Passed
1234567896930Passed
Minimum to Pass: 2,600

Crush Test

SeedCompression RateResult
1138101.14%Passed
65535101.14%Passed
8675309101.14%Passed
16777216101.14%Passed
123456789101.14%Passed
Minimum to Pass: 95%

Unique Bytes Test

SeedUnique High BytesUnique Low BytesResult
1138167165Passed
65535156171Failed
8675309167170Passed
16777216167161Passed
123456789160164Passed
Minimum to Pass: 160

High/Low Byte Test

SeedHigh After HighHigh After LowLow After HighLow After LowSpreadResult
11382523245424542568183Passed
655352455249024912563127Passed
8675309250625022502248921Passed
167772162531251025102448103Passed
123456789252224902490249745Passed
Maximum to Pass: 500

Distribution Test

Seed113865535867530916777216123456789
0.0 to 0.19991011101110101016
0.1 to 0.29889719701005986
0.2 to 0.31011100710299901068
0.3 to 0.4102598610181015969
0.4 to 0.59559729801022975
0.5 to 0.61016994101510111007
0.6 to 0.79911058957987995
0.7 to 0.810099681036973967
0.8 to 0.910101022103410271004
0.9 to 1.099710129519611014
Spread141219285179217
ResultPassedPassedPassedPassedPassed
Maximum to Pass: 500

Sample Output

1924514014205582583114003450341325698965879667130128802796212507955744037917354793656251486899478
52326607113247222631313902115925907974373489711835115563627129127309498013527711457138995689
17858207341057625866795783643207534385516965967207565525418134921101264908992071212610160418400
1060071815110265919317566667886935269601713864451721670746132589766149565522311812448261842957714
143365851773217587959870104314075435062051333637106196812176161943015352238904919005251707566372
96555696146142918714698751701687590749152119251488976526313561411801420866649487615103549439169
2444312832035667068465281774251469341697253481823877718013332981931767727156241234334213285
164454724617910266325063240251457678761713491151970900091851693190744320061143242288936944707
18795907457972038454545492821010450195335746889145842275433287962051287290520030389241121545296
1347820153115580291515900052902079889409210997484494974019737542828176960162511934840721389535124


A WFTID Website