[RNG Research] Random Number Generator Research and Development Project
Cryptography · Security · Numerical Methods · Physical Modeling · Artificial Intelligence
  32KB files
  10MB files
  About xRNG
  Tech brief
  Test reports
  Raw data
  More RNGs and tests


Random Numbers (*.rng)

These files are uniformly distributed, truly random numbers produced by xRNG** method.  This is binary data, i.e., every bit in each file is either a 0 or a 1 with 50-50 odds.  Stated differently, every byte in each file is an independent trial from a discrete random population that is uniformly distributed over the interval [0,255].  Naturally, these data can also be accessed two bytes at a time as integers uniformly distributed over [-32768,32767], etc.

As a courtesy, if you are downloading any of the large files (and particularly if you are taking more than one) please e-mail us with some information about you and how you will be using the random data we are providing.

Test Reports (*.txt)

All data we have produced by xRNG method have passed all tests for randomness to which we have subjected them.  This, of course, includes all data we are providing for download.  Test reports are provided below in MS-DOS text file format (*.txt).

Federal Information Processing Standards Publication 140-1 (FIPS PUB 140-1) specifies certain tests for randomness to be performed on truly random number generators (RNGs) used in information security applications.  Results are provided in brief form for FIPS-specified tests performed on the first 20,000 bits (i.e., 2,500 bytes) of each respective file.
(see http://csrc.nist.gov/publications/fips/fips1401.pdf or http://csrc.nist.gov/publications/fips/fips1401.htm.)

Diehard is a battery of tests for random number generators developed by Dr. George Marsaglia of Florida State University Department of Statistics.  Originally developed for testing pseudo-random generators, Diehard has since become a de facto standard for testing RNGs.  Diehard is much more rigorous than FIPS so that, as recently as 1997, Marsaglia himself stated, "I have found none of the latter [truly random number generators] that get past DIEHARD."  We are aware of two: the Intel RNG and our xRNG.

To determine if an RNG "gets past Diehard" it is important to pay particular attention to exactly what are the pass/fail criteria.  The following guidance is provided by Marsaglia: 

you should not be surprised with occasional p-values near 0 or 1, such as .0012 or .9983.  When a bit stream really FAILS BIG, you will get p's of 0 or 1 to six or more places. By all means, do not, as a Statistician might, think that a p < .025 or p> .975 means that the RNG has "failed the test at the .05 level". Such p's happen among the hundreds that DIEHARD produces, even with good RNG's.

(see http://stat.fsu.edu/~geo/diehard.html)

Diehard requires approximately 10 megabytes of random numbers, thus the battery was not performed on the 32K sample files.


High Performance:  Random numbers in the first table were produced by an "8-of-16" xRNG** method.  Gaussian random noise was measured by a 16-bit a/d converter.  The converter output was reduced modulo-256 by discarding data bits D8 through D15 and providing D0 through D7 as an 8-bit uniformly-distributed random variable. This xRNG outputs the least significant 8 of the 16 bits from the converter; hence the name "8-of-16."  (theoretical bias < 3 x 10 -12)

Random Numbers FIPS PUB 140-1 Diehard Tests
sample1.rng (32K) fipssam1.txt (4K) n/a
sample2.rng (32K) fipssam2.txt (4K) n/a
sample3.rng (32K) fipssam3.txt (4K) n/a
sample4.rng (32K) fipssam4.txt (4K) n/a
block0.rng (10M) fips0.txt (4K) report0.txt (57K)
block1.rng (10M) fips1.txt (4K) report1.txt (57K)
block2.rng (10M) fips2.txt (4K) report2.txt (57K)
block3.rng (10M) fips3.txt (4K) report3.txt (57K)
block4.rng (10M) fips4.txt (4K) report4.txt (57K)
block5.rng (10M) fips5.txt (4K) report5.txt (57K)
block6.rng (10M) fips6.txt (4K) report6.txt (57K)
block7.rng (10M) fips7.txt (4K) report7.txt (57K)
  fips.zip (8K) report.zip (102K)

Low Cost:  Random numbers in the second table were produced by a "4-of-8" xRNG** method.  Gaussian random noise was measured by an 8-bit a/d converter.  The converter output was reduced modulo-16 by discarding data bits D4 through D7 and providing D0 through D3 as a 4-bit uniformly-distributed random variable. This xRNG outputs the least significant 4 of the 8 bits from the converter; hence, "4-of-8."  (theoretical bias < 4 x 10 -9)

To produce uniformly-distributed 8-bit random data, the 4-bit numbers in the sequence outputted by the RNG were concatenated to form the bytes in the files below.  The first number in the sequence is stored in the high nibble of the first byte, the low nibble the next, followed by the high nibble of the second byte, etc.

Random Numbers FIPS PUB 140-1 Diehard Tests
block80.rng (10M) fips80.txt (4K) report80.txt (57K)
block81.rng (10M) fips81.txt (4K) report81.txt (57K)

We welcome any questions or comments you may have about the random data, the reports, or the site.  We also welcome any reports of additional tests on our data.

Please inform us as soon as possible if any of our data fails any test.

**xRNG technology is protected by US Patent.  Other foreign and domestic patent rights may be pending in this technology.  No license to or transfer of any intellectual property rights are granted expressly or by implication, estoppel, or otherwise by this document.

 Copyright © 2000-2006
  RNG Research