]> granicus.if.org Git - python/commitdiff
Added Pareto and Weibull distributions, courtesy Jeremy Hylton.
authorGuido van Rossum <guido@python.org>
Tue, 2 Dec 1997 02:47:39 +0000 (02:47 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 2 Dec 1997 02:47:39 +0000 (02:47 +0000)
Lib/random.py

index 608203f547be7e50fc8fb49d34f2c0b97dec6ecc..52a4266a42445bbfd95e231c8ca7e7d0ad2501da 100644 (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