Skip to content

Commit

Permalink
Move binomialvariate() to a section for discrete distributions (GH-10…
Browse files Browse the repository at this point in the history
  • Loading branch information
rhettinger authored Mar 23, 2023
1 parent f13fdac commit 4695709
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 23 deletions.
6 changes: 3 additions & 3 deletions Doc/library/random.rst
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,8 @@ Alternative Generator
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`.

Expand All @@ -423,7 +423,7 @@ Notes on Reproducibility
------------------------

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
Expand Down
45 changes: 25 additions & 20 deletions Lib/random.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
negative exponential
gamma
beta
binomial
pareto
Weibull
Expand All @@ -33,6 +32,11 @@
circular uniform
von Mises
discrete distributions
----------------------
binomial
General notes on the underlying Mersenne Twister core generator:
* The period is 2**19937-1.
Expand Down Expand Up @@ -731,6 +735,26 @@ def betavariate(self, alpha, beta):
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.
Expand Down Expand Up @@ -816,25 +840,6 @@ def binomialvariate(self, n=1, p=0.5):
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 ------------------

Expand Down

0 comments on commit 4695709

Please sign in to comment.