A "Random Number Generator" is a program that produces a number each time it is invoked. This number is, for a broad range of uses, "random." More exactly, it is unpredictable and has the same chance of being selected as any other number among those the generator can produce. A random generator is useful in the same way as flipping a coin can be useful: randomness is independent of human motives and desires, it is impartial and fair. Its applications include generating test data, Monte Carlo procedures, testing grammars, and making choices in programs for creating music, poetry, and other art. The definition of randomness is a philosophical and mathematical question, beyond the scope of this discussion. It would not be out of place, however, to explain that there is no such thing as a "random number." While a die may I and five-spot uppermost we would not say that therefore the number 5 is random. Put in a relatively precise way, we would say that a sequence of numbers is random if there is no possible program that could be written to predict what the next member of the sequence was going to be given all previous members of the sequence. We would also require that the sequence had certain statistical properties, for example, that each possible output was equally likely. A random generator is a device (such as an honest roulette wheel) that produces such a sequence. It follows that a computer program cannot generate a random sequence (if it could, then a faster computer with the same program could 'predict' the outputted numbers). This is generally true. The usual "random number generator" or "random function" provided at most installations is more properly a pseudorandom generator. It is, in fact, a program that produces a string of numbers that for most practical purposes appears random. It has good statistical properties and while it will eventually repeat itself and is certainly predictable, it is unlikely that you (or your program) would ever detect these "faults." There is a large and still growing literature on methods of programming pseudorandom functions, and one can probably be written in relatively short order (see for example, the Algorithms department of the Communications of the Association for Computing Machinery ). The random generator at your installation may have any of a number of forms. Usually it is a function or procedure whose name looks like RND, RAN, RANDOM, RANF, IRANF, etc. In APL it is simply a