summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/random.py2
-rw-r--r--Lib/test/test_random.py8
-rw-r--r--Misc/NEWS2
3 files changed, 11 insertions, 1 deletions
diff --git a/Lib/random.py b/Lib/random.py
index ae2d434b31..b80f1a1c3f 100644
--- a/Lib/random.py
+++ b/Lib/random.py
@@ -205,7 +205,7 @@ class Random(_random.Random):
raise ValueError, "empty range for randrange()"
if n >= maxwidth:
- return istart + self._randbelow(n)
+ return istart + istep*self._randbelow(n)
return istart + istep*int(self.random() * n)
def randint(self, a, b):
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index e3f05a0968..ddbcc2fd32 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -438,6 +438,14 @@ class MersenneTwister_TestBasicOps(TestBasicOps):
self.assertEqual(k, numbits) # note the stronger assertion
self.assert_(2**k > n > 2**(k-1)) # note the stronger assertion
+ def test_randrange_bug_1590891(self):
+ start = 1000000000000
+ stop = -100000000000000000000
+ step = -200
+ x = self.gen.randrange(start, stop, step)
+ self.assert_(stop < x <= start)
+ self.assertEqual((x+stop)%step, 0)
+
_gammacoeff = (0.9999999999995183, 676.5203681218835, -1259.139216722289,
771.3234287757674, -176.6150291498386, 12.50734324009056,
-0.1385710331296526, 0.9934937113930748e-05, 0.1659470187408462e-06)
diff --git a/Misc/NEWS b/Misc/NEWS
index a4eb6e2261..c1b9a12e09 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 1?
Core and builtins
-----------------
+- Bug #1590891: random.randrange don't return correct value for big number
+
- Patch #1586791: Better exception messages for some operations on strings,
tuples and lists.