whrandom
index
/usr/local/lib/python2.3/whrandom.py

Wichman-Hill random number generator.
 
Wichmann, B. A. & Hill, I. D. (1982)
Algorithm AS 183:
An efficient and portable pseudo-random number generator
Applied Statistics 31 (1982) 188-190
 
see also:
        Correction to Algorithm AS 183
        Applied Statistics 33 (1984) 123
 
        McLeod, A. I. (1985)
        A remark on Algorithm AS 183
        Applied Statistics 34 (1985),198-200
 
 
USE:
whrandom.random()       yields double precision random numbers
                        uniformly distributed between 0 and 1.
 
whrandom.seed(x, y, z)  must be called before whrandom.random()
                        to seed the generator
 
There is also an interface to create multiple independent
random generators, and to choose from other ranges.
 
 
 
Multi-threading note: the random number generator used here is not
thread-safe; it is possible that nearly simultaneous calls in
different theads return the same random value.  To avoid this, you
have to use a lock around all calls.  (I didn't want to slow this
down in the serial case by using a lock here.)

 
Classes
       
whrandom

 
class whrandom
     Methods defined here:
__init__(self, x=0, y=0, z=0)
Initialize an instance.
Without arguments, initialize from current time.
With arguments (x, y, z), initialize from them.
choice(self, seq)
Choose a random element from a non-empty sequence.
randint(self, a, b)
Get a random integer in the range [a, b] including
both end points.
 
(Deprecated; use randrange below.)
random(self)
Get the next random number in the range [0.0, 1.0).
randrange(self, start, stop=None, step=1, int=<type 'int'>, default=None)
Choose a random item from range(start, stop[, step]).
 
This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
Do not supply the 'int' and 'default' arguments.
seed(self, x=0, y=0, z=0)
Set the seed from (x, y, z).
These must be integers in the range [0, 256).
uniform(self, a, b)
Get a random number in the range [a, b).

 
Functions
       
choice(self, seq) method of whrandom instance
Choose a random element from a non-empty sequence.
randint(self, a, b) method of whrandom instance
Get a random integer in the range [a, b] including
both end points.
 
(Deprecated; use randrange below.)
random(self) method of whrandom instance
Get the next random number in the range [0.0, 1.0).
randrange(self, start, stop=None, step=1, int=<type 'int'>, default=None) method of whrandom instance
Choose a random item from range(start, stop[, step]).
 
This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
Do not supply the 'int' and 'default' arguments.
seed(self, x=0, y=0, z=0) method of whrandom instance
Set the seed from (x, y, z).
These must be integers in the range [0, 256).
uniform(self, a, b) method of whrandom instance
Get a random number in the range [a, b).