Uniform Non-Random Random Numbers

Nearly all random number generators, scalar or multivariate, simple or complex, rely on a source of uniform random numbers as their foundation. They use one or more uniform random numbers to construct another specialized random number or vector. What is a uniform random number? It is a random number each of whose possible values is equally likely. (Purists who take exception to the term possible values must remember that we are dealing with computers that have a finite resolution.) Virtually all practical random number algorithms generate an integer whose range is from zero to some fixed maximum value. If the algorithm is good, each of the integers in that range will be equally likely, and the value generated at any given time will have no statistical relationship to those numbers that were generated previously. Naturally, there will be a relationship of some sort. We are, after all, dealing with a deterministic algorithm here. The next random number in a series is computed by means of an explicit formula, so in a sense, strict randomness is out of the question. But that is not the point. In fact, for many applications, repeatability is an asset that allows us to carefully study events. All that we really care about is statistical randomness. We want our definitely non-random random numbers to behave as if they were really random. [...] Knuth (1981) is an excellent reference for those who want more information. Press et al. (1992) is also a great source for practical advice and algorithms.

-- Timothy Masters

from "Advanced Algorithms for Neural Networks: A C++ Sourcebook"

Quoted on Sat Oct 29th, 2011