Bug #1590891: random.randrange don't return correct value for big number
This commit is contained in:
parent
e65f14fcc3
commit
5425a67331
|
@ -205,7 +205,7 @@ class Random(_random.Random):
|
||||||
raise ValueError, "empty range for randrange()"
|
raise ValueError, "empty range for randrange()"
|
||||||
|
|
||||||
if n >= maxwidth:
|
if n >= maxwidth:
|
||||||
return istart + self._randbelow(n)
|
return istart + istep*self._randbelow(n)
|
||||||
return istart + istep*int(self.random() * n)
|
return istart + istep*int(self.random() * n)
|
||||||
|
|
||||||
def randint(self, a, b):
|
def randint(self, a, b):
|
||||||
|
|
|
@ -439,6 +439,14 @@ class MersenneTwister_TestBasicOps(TestBasicOps):
|
||||||
self.assertEqual(k, numbits) # note the stronger assertion
|
self.assertEqual(k, numbits) # note the stronger assertion
|
||||||
self.assert_(2**k > n > 2**(k-1)) # 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,
|
_gammacoeff = (0.9999999999995183, 676.5203681218835, -1259.139216722289,
|
||||||
771.3234287757674, -176.6150291498386, 12.50734324009056,
|
771.3234287757674, -176.6150291498386, 12.50734324009056,
|
||||||
-0.1385710331296526, 0.9934937113930748e-05, 0.1659470187408462e-06)
|
-0.1385710331296526, 0.9934937113930748e-05, 0.1659470187408462e-06)
|
||||||
|
|
|
@ -12,6 +12,8 @@ What's New in Python 2.5.1c1?
|
||||||
Core and builtins
|
Core and builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Bug #1590891: random.randrange don't return correct value for big number
|
||||||
|
|
||||||
- Bug #1456209: In some obscure cases it was possible for a class with a
|
- Bug #1456209: In some obscure cases it was possible for a class with a
|
||||||
custom ``__eq__()`` method to confuse set internals when class instances
|
custom ``__eq__()`` method to confuse set internals when class instances
|
||||||
were used as a set's elements and the ``__eq__()`` method mutated the set.
|
were used as a set's elements and the ``__eq__()`` method mutated the set.
|
||||||
|
|
Loading…
Reference in New Issue