This module implements a Wichmann-Hill pseudo-random number generator
class that is also named `whrandom`. Instances of the
`whrandom` class conform to the Random Number Generator
interface described in section

([`seed``x, y, z`])-
Initializes the random number generator from the integers
`x`,`y`and`z`. When the module is first imported, the random number is initialized using values derived from the current time. If`x`,`y`, and`z`are either omitted or`0`

, the seed will be computed from the current system time. If one or two of the parameters are`0`

, but not all three, the zero values are replaced by ones. This causes some apparently different seeds to be equal, with the corresponding result on the pseudo-random series produced by the generator.

(`choice``seq`)-
Chooses a random element from the non-empty sequence
`seq`and returns it.

(`randint``a, b`)-
Returns a random integer
`N`such that

.`a`<=`N`<=`b`

()`random`- Returns the next random floating point number in the range [0.0 ... 1.0).

(`seed``x, y, z`)-
Initializes the random number generator from the integers
`x`,`y`and`z`. When the module is first imported, the random number is initialized using values derived from the current time.

(`uniform``a, b`)-
Returns a random real number
`N`such that

.`a`<=`N`<`b`

When imported, the `whrandom` module also creates an instance of
the `whrandom` class, and makes the methods of that instance
available at the module level. Therefore one can write either
`N = whrandom.random()`

or:

generator = whrandom.whrandom() N = generator.random()

Note that using separate instances of the generator leads to independent sequences of pseudo-random numbers.

**See Also:**

- Module
`random`: - Generators for various random distributions and documentation for the Random Number Generator interface.

Wichmann, B. A. & Hill, I. D., ``Algorithm AS 183:
An efficient and portable pseudo-random number generator'',
*Applied Statistics* 31 (1982) 188-190.

See