18NOV2007
A Generic Random Number Generator Test Suite - RNGTS - http://arxiv.org/PS_cache/math/pdf/0410/0410385v1.pdf
Boost Random Number Library - http://www.koders.com/noncode/fid41C39BFBAD7DF469EC5600089B8D9FA6BAF4D69A.aspx
A Comparison of Random Number Generators Used in Business - Proceedings of the Annual Meeting of the American Statistical Association, August 5-9, 2001 - http://www.amstat.org/sections%5CSRMS%5CProceedings%5Cy2001%5CProceed%5C00109.pdf
Random Number Generators: An Evaluation and Comparison of Random.org and Some Commonly Used Generators April 2005 -
http://www.random.org/analysis/Analysis2005.pdf
24OCT2007
DDJ June 01, 1996 - Testing Random Number Generators http://www.ddj.com/cpp/184403185 source
source source
Random Number Generation - good description of many generators & testing - http://www.shadlen.org/ichbin/random/
Tuning the Collision Test for Stringency - http://www.cs.hku.hk/research/techreps/document/TR-2000-05.pdf
Working Collision Test - http://i.cs.hku.hk/~tsang/collision.c
Random Number Generators: An Evaluation and Comparison of Random.org and Some Commonly Used Generators -
http://www.random.org/analysis/Analysis2005.pdf
A Random Number Generator Test Suite for the C++ Standard - http://www.comp-phys.org/software/rngts/doc/main.pdf
RandomNumberGeneratorTestSuite(RNGTS) File List - http://www.comp-phys.org/rngts/doc/interface-source/files.html
local
10OCT2007
NIST - 07OCT2007 12OCT2007 14OCT2007
Diehard v0.2 - 07OCT2007 10OCT2007 14OCT2007
Diehardc - 10OCT2007 14OCT2007
Knuth -
piHex Results - 10000
Microsoft Crypto - 11OCT2007
Dialog Box Project 2005 - 24OCT2007
Sockets Project 2005 - 24OCT2007
Simple DLL - http://pheatt.emporia.edu/courses/2007/cs260f07/hand55/hand55.htm
Creating a dll for a Class - http://pheatt.emporia.edu/courses/2007/cs260f07/hand54/hand54.htm
Creating A Windows System Service - http://pheatt.emporia.edu/courses/2007/cs260f07/hand45/hand45.htm
29SEP2007
Revised NIST Classes 23SEP2007 28SEP2007 29SEP2007 07OCT2007 - Interface with defaults, all tests working. Diehard v0.2 07OCT2007
13SEP2007
Smith NIST with Classes Hex PI Generation Hex digits beginning at position 357,134 Hex Digits Sample digits for hexa decimal digits of pi 65536 hexadecimal digits
references: testing PRNGs PDH Random Numbers TestU01 Empirical Testing of Random Number Generators
12SEP2007
12SEP2007 NIST v1.8 command line version with all tests working. NIST Classes
08SEP2007 NIST v1.8 command line version with Serial working. NIST Files
06SEP2007
Statistical Testing of Random Number Generators
The HAVEGE unpredictable random number generator (HArdware Volatile Entropy Gathering and Expansion)
Corrections of the NIST Statistical Test Suite for Randomness local
03SEP2007
join together several binary files
NIST DOC: A STATIISTIICAL TEST SUIITE FOR RANDOM AND PSEUDORANDOM NUMBER GENERATORS FOR CRYPTOGRAPHIIC APPLIICATIIONS
30AUG2007
Preliminary Diehard comparison is here. A B C D E F
Diehard v0.2 Sample Size Requirements Diehard C Sample Size Requirements NIST Sample Size requirements
23AUG2007
The thought is at this time to get both the Diehard and the NIST code into shape so it ultimately can be run in the DCEZ environment. This may require among other things:
For Diehard, need to compare the the output from:
The Marsaglia Random Number CDROM including the Diehard Battery of Tests of Randomness - Windows Version - http://i.cs.hku.hk/~diehard/cdrom/
Diehard Battery of Tests of Randomness v0.2 beta - http://i.cs.hku.hk/~diehard/ - Windows executable - Windows Executable (106Kb)
Diehard Battery of Tests of Randomness v0.2 beta - http://i.cs.hku.hk/~diehard/ - Compiled C version - VS 6 Project
DiehardC - http://www.geocities.com/arhuaco/software-by-others/scott-nelson/index.html. - project DiehardC VS6 Project
Based on the comparison, we can pick the most compatible with ?. What is truth?
For NIST:
Reading the doc on the evaluation software ("A Statistical Test Suite for the Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications,") selecting the parameters to use will require making some assumptions about block size, etc. This will require a fair amount of farting around and eyeballing the tests. The suite contains 16 tests, with about half requiring defining some parameters (other than the number of bits to examine).
Suggest we strip out the modules for the 16 tests and set up out own test driver. We can then specify parameter levels without having to use the Windows version.
At some point we do need to validate the stripped down version with the Windows Version.
A question: We can generate ransom bits with the TRNG, but what is the best way to convert these to uniform random values U(0,1)?
Do we slam together 2 bytes worth of TRNG bits as an unsigned short and do a floating point division by 65,535?
Do we slam together 4 bytes worth of TRNG bits as an unsigned long and do a floating point division by 4,294,967,295?
Do we stuff unsigned bits into a IEEE Single Precision (http://pheatt.emporia.edu/courses/2007/cs220f07/hand10/hand10.htm) and get something looking like U(0,1)? NOPE!!
19AUG2007
Autoregressive to Anything (ARTA) processes are stationary time series with arbitrary marginal distributions and feasible autocorrelation structure specified through lag p.
http://users.iems.northwestern.edu/~nelsonb/ARTA/ local zipped compiled FORTRAN programs
Random Number Machines: A Literature Survey - http://www.ciphersbyritter.com/RES/RNGMACH.HTM
SAS Autocorrelation
http://support.sas.com/rnd/app/examples/ets/gplot/index.htm
http://ftp.sas.com/techsup/download/sample/samp_lib/etssampAutoreg_Getting_Started_Examples.html
18AUG2007:
Preliminary look at George Marsaglia's Diehard:
The Marsaglia Random Number CDROM including the Diehard Battery of Tests of
Randomness -
http://i.cs.hku.hk/~diehard/cdrom/
The C code was gathered up and compiled and compared to the Windows executable
version. This raised some issues, specifically concerning the missing erf
function and it's definition. A fair amount of work leads one to believe that
there are many things that were left unsaid about the original conversion from
Fortran to C. Substituting the erf function from NRC led to almost universally
bad results. Probably easier to rewrite this, or search the Internet and find
somebody else who did.
Next the C code at:
Diehard Battery v0.2 beta -
http://i.cs.hku.hk/~diehard/ local
Local:
| Windows Executable (106Kb) | |
| ReadMe (9Kb) | VS 6 Project |
| Source code (51Kb) |
was found. This appears to be a working version of the C code (it compiled on one pass) and appears to match the C implementation (not necessarily the Fortran version). It compares favorably to the Windows version at http://i.cs.hku.hk/~diehard/cdrom/ (with some minor differences). It also summarizes all the p-values at the end, which is the cheap and dirty way of doing the comparison. Need to compare C compilation with their supplied Windows .exe.
There is also a port of Diehard known as DiehardC, http://www.geocities.com/arhuaco/software-by-others/scott-nelson/index.html. (local diehardc.c and parse_diehardc.pl, a Diehard output parser.). This compares favorably with Diehard (with some minor differences, specifically the order of the tests.) Compiled with out any issues.
Another thought is the Dieharder (Robert G. Brown's General Tools Page) approach - http://www.phy.duke.edu/~rgb/General/dieharder.php. This is a Linux implementation of Diehard with some other tests added. It requires the GNU Scientific Library. A Windows port of the GNU Library is here. Getting this sucker to work in a Windows environment would on the surface to be time intensive.
For another day:
Hash Functions for Hash Table Lookup -
http://www.burtleburtle.net/bob/hash/evahash.html