Testing Cliff RNG with DIEHARDER

My previous post introduced the Cliff random number generator.

The post showed how to find starting seeds where the generator will start out by producing approximately equal numbers.

Despite this flaw, the generator works well by some criteria.

I produced a file of s billion 32-bit integers by multiplying the output values, which were floating point numbers between 0 and 1, by 232 and truncating to integer.

Then I ran the DIEHARDER random number generator test suite.

The results were interesting.

Before running the tests, I thought the tests would nearly all pass or nearly all fail, more likely the latter.

But what happened was that many tests passed and some failed hard [1].

Here’s a list of the tests that passed:diehard_birthdaysdiehard_rank_32x32diehard_rank_6x8diehard_bitstreamdiehard_oqsodiehard_dnadiehard_count_1s_strdiehard_count_1s_bytdiehard_runssts_monobitsts_serialrgb_bitdistrgb_kstest_testdab_dctdab_filltree2dab_monobit2The tests that failed were:diehard_parking_lotdiehard_2spherediehard_3spherediehard_squeezediehard_crapsmarsaglia_tsang_gcdrgb_lagged_sumdab_bytedistribI’ve left out a few test restults that were ambiguous as well as tests that were described as “Suspect” and “Do not use” on the DIEHARDER web site.

The site I mentioned in the previous post where I ran across this generator said that it passed a spherical generation test.

I assume the implementation of that test was less demanding that the version included in DIEHARD.

But the generator does well by other tests.

The lagged sum test tests for autocorrelation.

Maybe the failure of this test has something to do with the fixed points discussed earlier.

Related postsDIEHARDER test results for PCG and MWCRandomization consulting[1] By “failed hard” I mean the test return a p-value of zero.

The p-value couldn’t actually be zero, but it was close enough that it the displayed value was exactly zero.


. More details

Leave a Reply