Quality Random Number Generator
摘要
Numerous applications in physics and technology rely on random number generation: for Monte Carlo purposes, key distribution, and other tasks. For these elaborate hash functions with carefully studied and tuned algorithms have been developed, giving pseudo-random numbers. Depending on the complexity and quality of their output, they vary from very good quality (such as RANLUX with a 10171 repetition period), to fast algorithms, however of lesser period (such as the Mersenne Twister, a factor of ca. ×40 faster). We here present the implementation of a true-random number “multiplier” algorithm. The algorithm relies on a finite set of true-random numbers from a physical source (in our case 0.2 M atmospheric noise random numbers in the range of 0–9999). The algorithm produces new numbers by combining pairs of 2 random numbers from the list, situated at random distance apart. The random offset is calculated by a shift register structure involving both the local rand() generator, and numbers from the list itself, whereby it produces “non-repetitive repetitions”—i.e., our multiplier has no known period. The tests, performed with the DieHarder [1] test suite, show good quality.