Index: Lib/random.py =================================================================== --- Lib/random.py (revision 52682) +++ Lib/random.py (working copy) @@ -205,7 +205,7 @@ 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): Index: Lib/test/test_random.py =================================================================== --- Lib/test/test_random.py (revision 52682) +++ Lib/test/test_random.py (working copy) @@ -389,6 +389,17 @@ return self.assert_(start <= self.gen.randrange(start, stop) < stop) + def test_bigrand_ranges_step(self): + for i in [40, 80, 160, 200, 211, 250, 375, 512, 550]: + start = i + stop = 2 ** i + res = self.gen.randrange(start, stop, 1000) + self.assert_(start <= res < stop) + self.assert_((res - start) % 1000 == 0) + res = self.gen.randrange(start, -stop, -712) + self.assert_(-stop < res <= start) + self.assert_((res - start) % 712 == 0) + def test_rangelimits(self): for start, stop in [(-2,0), (-(2**60)-2,-(2**60)), (2**60,2**60+2)]: self.assertEqual(set(range(start,stop)),