whrandom
 

#       WICHMANN-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.


 Classes
                                                                                                                                                                                                                               
whrandom


 class whrandom
           # 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.)
 
                                                                                                                                                                                                                     
__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=<built-in function int>, default=None)
#
# Choose a random item from range([start,] step[, stop]).
# This fixes the problem with randint() which includes the
# endpoint; in Python this is usually not what you want. #
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(no arg info)
#
# Choose a random element from a non-empty sequence. #
randint(no arg info)
#
# Get a random integer in the range [a, b] including both end points.
# (Deprecated; use randrange below.) #
random(no arg info)
#
# Get the next random number in the range [0.0, 1.0). #
randrange(no arg info)
#
# Choose a random item from range([start,] step[, stop]).
# This fixes the problem with randint() which includes the
# endpoint; in Python this is usually not what you want. #
seed(no arg info)
#
# Set the seed from (x, y, z).
# These must be integers in the range [0, 256). #
uniform(no arg info)
#
# Get a random number in the range [a, b). #