# 5.4 `whrandom` -- Pseudo-random number generator

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 5.3.1. They also offer the following method, specific to the Wichmann-Hill algorithm:

`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.

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.