More info required on rand(3C), rand48(3C) and random(3B) please

Tim Monks tim at bhpmrl.oz.au
Wed Aug 22 11:15:37 AEST 1990


Can someone at SGI or elsewhere please provide me with some further
information on the pseudo-random number generators rand(3C),
*rand48(3C), and random(3B) in addition to what is available in the
rather scant manual pages.  I am particularly interested in the
algorithm used for random(3B) and how it compares to the Winchman-Hill
(combination of 3 multiplicative congruential rngs) and the newer
Marsaglia-Zaman-James generator (a combination of a lagged Fibonacci
sequence and an arithmetic subtractive generator). My application calls
for a rng with good properties when taken as n-tuples, n = 10-25.

Here's what I know about them already:

rand(3C):
========
	Manual pages info :
		A multiplicative congruential rng with period 2^32
	My suppositions :
	  1. The form is probably :
			    x(n+1)=x(n)*16807 mod (2^31-1)
	     because this is most popular on 32 bit machines.
	  2. Low order bits are less random than they should be.
	  3. n-tuples formed from this generator are apparently uniform 
	     for low n (a lattice diagram on the unit square showing pairs
	     (x(n), x(n-1)) has no visible structure), but for larger n, 
	     the tuples lie on a limited number of hyperplanes (Marsaglia 
	     effect). This implies that the rng should not be used in high-
	     dimensional (>2) simulations.

*rand48(3C):
===========
	Manual pages info :
		A multiplicative congruential rng of the form :
			    x(n+1) = (a.x(n) + c) mod (2^48)
		where the constants a & c have default values of
		a = 3740067437, c = 11, though these can be changed.
	My suppositions :
	  1. Suffers same inherent problems as rand(3C), though these
	     will be less obvious because of the longer period (which is ?).

random(3B)
==========
	Manual pages info :
		A "non-linear additive feedback rng employing a default
		table of size 31 long ints"
	My suppositions :
	  1. Because this rng uses more state information than just the 
	     previous deviate to generate the new value it should perform
	     better than the previous two in high-dimensional rn generation.
	My questions:
	  1. What exactly is the form of it - is there a reference to any
	     works by the the author (Earl T Cohen).
	  2. Is there any further information on the uniformity of n-tuples
	     taken from this generator ?
	  3. What sort of tests are used to test uniformity of n-tuples
	     where n is too large to visualize ?
	  4. Comparisons with W-H and M-Z-J generators mentioned above ?


Thanks in advance for any pointers, tips &/c...
--
Dr. Tim Monks                                

Image Processing & Data Analysis Group   |   (direct) (+61-3)566-7448
BHP Melbourne Research Laboratories      |   (switch) (+61-3)560-7066
245 Wellington Rd, Mulgrave, 3170,       |   (fax)    (+61-3)561-6709
AUSTRALIA                                |   (EMAIL)  tim at merlin.bhpmrl.oz.au



More information about the Comp.sys.sgi mailing list