next up previous
Next: Randomness Assessments Up: Random Number Generators Project Previous: Random Number Generators Project


Introduction

Random number generators (RNG) play an important role in computer-based simulations such as Monte Carlo methods where random variates are needed to model inherent randomness of components [10]. Another major use of RNGs is in cryptography, for example, session and message keys for symmetric block ciphers like iterated DES [1].

There are two broad classes of RNGs: Hardware RNGs and Algorithmic RNGs. The former is a physical device relying on external sources like decay time of a radioactive material or electronic noises of resistors to generate random numbers, while the latter is a self-contained, finite, and deterministic computer program which stretches out a ``seed'' to a seemingly random sequence. Random numbers generated by algorithmic RNGs are called pseudo-random since the nondeterminism of randomness is only simulated. But it is also doubtful as to whether hardware RNGs produce truly random numbers. As pointed out by Einstein: ``God does not play dice,'' one can argue that by meticulously modeling the interactions among the electrons in a resistor, the noises could be just as deterministic as algorithmic RNGs.

The choice between hardware RNGs and algorithmic RNGs depends on application needs. The reproducibility of outcomes is an advantage of algorithmic RNG for certain simulations. The statistical efficiency of simulation runs is measured by the variance of its output random variables. Smaller variance is favorable since it results in smaller confidence intervals. To reduce the variance, one technique called ``Common Random Numbers'' requires that simulation runs of different configurations under study use the same stream of random numbers [10].

In this project we only focus on algorithmic RNGs, so throughout this report we use RNG to denote algorithmic random number generators. We have implemented seven uniform RNGs (PMMLCG, UNIX, ICG, Tausworthe, TT800, MT19937, and BBS) and several statistical tests, both empirical and theoretical, to investigate their uniformity and randomness.

The rest of this report is organized as follows. In Section 2 we discusses three kinds of randomness assessments. Section 3 and 4 describes the RNGs and the statistical tests we have implemented, respectively. Section 5 presents the experimental results.


next up previous
Next: Randomness Assessments Up: Random Number Generators Project Previous: Random Number Generators Project
2001-05-30