65
index
modules |
next |
previous |
9.6.
random
— Generate pseudo-random
numbers
Source code: Lib/random.py
This module implements pseudo-random number generators for various distributions.
For integers, uniform selection from a range. For sequences, uniform selection of a
random element, a function to generate a random permutation of a list in-place, and a
function for random sampling without replacement.
On the real line, there are functions to compute uniform, normal (Gaussian), lognormal,
negative exponential, gamma, and beta distributions. For generating distributions of
angles, the von Mises distribution is available.
Almost all module functions depend on the basic function
random()
, which generates a
random float uniformly in the semi-open range [0.0, 1.0). Python uses the Mersenne
Twister as the core generator. It produces 53-bit precision floats and has a period of
2**19937-1. The underlying implementation in C is both fast and threadsafe. The
Mersenne Twister is one of the most extensively tested random number generators in
existence. However, being completely deterministic, it is not suitable for all purposes, and
is completely unsuitable for cryptographic purposes.
The functions supplied by this module are actually bound methods of a hidden instance of
the
random.Random
class. You can instantiate your own instances of
Random
to get
generators that don’t share state. This is especially useful for multi-threaded programs,
creating a different instance of
Random
for each thread, and using the
jumpahead()
method to make it likely that the generated sequences seen by each thread don’t overlap.
Class
Random
can also be subclassed if you want to use a different basic generator of
your own devising: in that case, override the
random()
,
seed()
,
getstate()
,
setstate()
and
jumpahead()
methods. Optionally, a new generator can supply a
getrandbits()
method — this allows
randrange()
to produce selections over an arbitrarily large range.
New in version 2.4: the
getrandbits()
method.
As an example of subclassing, the
random
module provides the
WichmannHill
class that
Python » Python v2.7.6 documentation » The Python Standard Library » 9. Numeric and
Mathematical Modules »