Added Pareto and Weibull distributions, courtesy Jeremy Hylton.

This commit is contained in:
Guido van Rossum 1997-12-02 02:47:39 +00:00
parent c99a239f42
commit cf4559a62e
1 changed files with 18 additions and 0 deletions

View File

@ -212,6 +212,22 @@ def betavariate(alpha, beta):
z = expovariate(1.0/beta)
return z/(y+z)
# -------------------- pareto --------------------
def paretovariate(alpha):
# Jain, pg. 495
u = random()
return 1.0 / pow(u, 1.0/alpha)
# -------------------- pareto --------------------
def weibullvariate(alpha, beta):
# Jain, pg. 499; bug fix courtesy Bill Arms
u = random()
return alpha * pow(-log(u), 1.0/beta)
# -------------------- test program --------------------
def test(N = 200):
@ -233,6 +249,8 @@ def test(N = 200):
test_generator(N, 'gammavariate(200.0, 1.0)')
test_generator(N, 'gauss(0.0, 1.0)')
test_generator(N, 'betavariate(3.0, 3.0)')
test_generator(N, 'paretovariate(1.0)')
test_generator(N, 'weibullvariate(1.0, 1.0)')
def test_generator(n, funccall):
import time