Commit 978c6abc authored by Raymond Hettinger's avatar Raymond Hettinger

Issue 13355: Make random.triangular degrade gracefully when low == high.

parent a2fc99ec
......@@ -355,7 +355,10 @@ class Random(_random.Random):
"""
u = self.random()
c = 0.5 if mode is None else (mode - low) / (high - low)
try:
c = 0.5 if mode is None else (mode - low) / (high - low)
except ZeroDivisionError:
return low
if u > c:
u = 1.0 - u
c = 1.0 - c
......
......@@ -602,7 +602,7 @@ class TestDistributions(unittest.TestCase):
for variate, args, expected in [
(g.uniform, (10.0, 10.0), 10.0),
(g.triangular, (10.0, 10.0), 10.0),
#(g.triangular, (10.0, 10.0, 10.0), 10.0),
(g.triangular, (10.0, 10.0, 10.0), 10.0),
(g.expovariate, (float('inf'),), 0.0),
(g.vonmisesvariate, (3.0, float('inf')), 3.0),
(g.gauss, (10.0, 0.0), 10.0),
......
......@@ -24,6 +24,9 @@ Library
- Issue #14710: pkgutil.find_loader() no longer raises an exception when a
module doesn't exist.
- Issue #13355: random.triangular() no longer fails with a ZeroDivisionError
when low equals high.
- Issue #21538: The plistlib module now supports loading of binary plist files
when reference or offset size is not a power of two.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment