Report Number: CS-TR-73-334
Institution: Stanford University, Department of Computer Science
Title: URAND: a universal random number generator.
Author: Malcolm, Michael A.
Author: Moler, Cleve B.
Date: January 1973
Abstract: A subroutine for generating uniformly-distributed floating-point numbers in the interval [O,1) is presented in ANSI standard Fortran. The subroutine, URAND, is designed to be relatively machine independent. URAND has undergone minimal testing on various machines and is thought to work properly on any machine having binary integer number representation, integer multiplication modulo m and integer addition either modulo m or yielding at least ${log}_2$ (m) significant bits, where m is some integral power of 2. Upon the first call of URAND, the value of m is automatically determined and appropriate constants for a linear congruential generator are computed following the suggestions of D. E. Knuth, volume 2. URAND is guaranteed to have a full-length cycle. Readers are invited to apply their favorite statistical tests to URAND, using any binary machine, and report the results to the authors.
http://i.stanford.edu/pub/cstr/reports/cs/tr/73/334/CS-TR-73-334.pdf