Class that implements the default pseudo-random number generator used by the
:mod:`random` module.
- .. deprecated:: 3.9
- In the future, the *seed* must be one of the following types:
+ .. deprecated-removed:: 3.9 3.11
+ Formerly the *seed* could be any hashable object. Now it is limited to:
:class:`NoneType`, :class:`int`, :class:`float`, :class:`str`,
:class:`bytes`, or :class:`bytearray`.
------------------------
Sometimes it is useful to be able to reproduce the sequences given by a
-pseudo-random number generator. By re-using a seed value, the same sequence should be
+pseudo-random number generator. By reusing a seed value, the same sequence should be
reproducible from run to run as long as multiple threads are not running.
Most of the random module's algorithms and seeding functions are subject to
negative exponential
gamma
beta
- binomial
pareto
Weibull
circular uniform
von Mises
+ discrete distributions
+ ----------------------
+ binomial
+
+
General notes on the underlying Mersenne Twister core generator:
* The period is 2**19937-1.
return y / (y + self.gammavariate(beta, 1.0))
return 0.0
+ def paretovariate(self, alpha):
+ """Pareto distribution. alpha is the shape parameter."""
+ # Jain, pg. 495
+
+ u = 1.0 - self.random()
+ return u ** (-1.0 / alpha)
+
+ def weibullvariate(self, alpha, beta):
+ """Weibull distribution.
+
+ alpha is the scale parameter and beta is the shape parameter.
+
+ """
+ # Jain, pg. 499; bug fix courtesy Bill Arms
+
+ u = 1.0 - self.random()
+ return alpha * (-_log(u)) ** (1.0 / beta)
+
+
+ ## -------------------- discrete distributions ---------------------
def binomialvariate(self, n=1, p=0.5):
"""Binomial random variable.
return k
- def paretovariate(self, alpha):
- """Pareto distribution. alpha is the shape parameter."""
- # Jain, pg. 495
-
- u = 1.0 - self.random()
- return u ** (-1.0 / alpha)
-
- def weibullvariate(self, alpha, beta):
- """Weibull distribution.
-
- alpha is the scale parameter and beta is the shape parameter.
-
- """
- # Jain, pg. 499; bug fix courtesy Bill Arms
-
- u = 1.0 - self.random()
- return alpha * (-_log(u)) ** (1.0 / beta)
-
-
## ------------------------------------------------------------------
## --------------- Operating System Random Source ------------------