diff options
author | Raymond Hettinger <python@rcn.com> | 2014-05-13 22:13:40 -0700 |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2014-05-13 22:13:40 -0700 |
commit | 23042cda40bdab21db36a92d5d2655046207f947 (patch) | |
tree | ef81353c09168980500d5d4d67590131280657e9 | |
parent | Issue #21499: Ignore __builtins__ in several test_importlib.test_api tests. (diff) | |
download | cpython-23042cda40bdab21db36a92d5d2655046207f947.tar.gz cpython-23042cda40bdab21db36a92d5d2655046207f947.tar.bz2 cpython-23042cda40bdab21db36a92d5d2655046207f947.zip |
Issue #21470: Do a better job seeding the random number generator
to fully cover its state space.
-rw-r--r-- | Lib/random.py | 4 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/Lib/random.py b/Lib/random.py index 808175ab4a1..174e755a029 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -105,7 +105,9 @@ class Random(_random.Random): if a is None: try: - a = int.from_bytes(_urandom(32), 'big') + # Seed with enough bytes to span the 19937 bit + # state space for the Mersenne Twister + a = int.from_bytes(_urandom(2500), 'big') except NotImplementedError: import time a = int(time.time() * 256) # use fractional seconds diff --git a/Misc/NEWS b/Misc/NEWS index f85155e0bc3..eff6573d947 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -26,6 +26,9 @@ Library - Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a flush() on the underlying binary stream. Patch by akira. +- Issue #21470: Do a better job seeding the random number generator by + using enough bytes to span the full state space of the Mersenne Twister. + - Issue #21398: Fix an unicode error in the pydoc pager when the documentation contains characters not encodable to the stdout encoding. |