From 8cf915e9fb83678e9715394d0a5c4bb8221852f8 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 9 Aug 2003 18:20:16 +0000 Subject: SF bug #778964: bad seed in python 2.3 random The default seed is time.time(). Multiplied by 256 before truncating so that fractional seconds are used. This way, two consequetive calls to random.seed() are much more likely to produce different sequences. --- Lib/random.py | 3 +++ Lib/test/test_random.py | 2 +- Misc/NEWS | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Lib/random.py b/Lib/random.py index 1a0b8f3..b1d13c0 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -94,6 +94,9 @@ class Random(_random.Random): If a is not None or an int or long, hash(a) is used instead. """ + if a is None: + import time + a = long(time.time() * 256) # use fractional seconds super(Random, self).seed(a) self.gauss_next = None diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py index ea2243d..c9103e8 100644 --- a/Lib/test/test_random.py +++ b/Lib/test/test_random.py @@ -20,7 +20,7 @@ class TestBasicOps(unittest.TestCase): def test_autoseed(self): self.gen.seed() state1 = self.gen.getstate() - time.sleep(1.1) + time.sleep(0.1) self.gen.seed() # diffent seeds at different times state2 = self.gen.getstate() self.assertNotEqual(state1, state2) diff --git a/Misc/NEWS b/Misc/NEWS index b27ba19..d3d229d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -27,6 +27,9 @@ Extension modules Library ------- +- Bug #778964: random.seed() now uses fractional seconds so that + rapid successive, seeding calls will produce different sequences. + - Bug #777664: Add Tkconstants.HIDDEN. - Bug #781065: test_normalization is updated to the current -- cgit v0.12