— Generate pseudo-random
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
, 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
class. You can instantiate your own instances of
generators that don’t share state. This is especially useful for multi-threaded programs,
creating a different instance of
for each thread, and using the
method to make it likely that the generated sequences seen by each thread don’t overlap.
can also be subclassed if you want to use a different basic generator of
your own devising: in that case, override the
methods. Optionally, a new generator can supply a
method — this allows
to produce selections over an arbitrarily large range.
New in version 2.4: the
As an example of subclassing, the
module provides the
Python » Python v2.7.6 documentation » The Python Standard Library » 9. Numeric and
Mathematical Modules »