Issue #21470: Do a better job seeding the random number generator

to fully cover its state space.
This commit is contained in:
Raymond Hettinger 2014-05-13 22:13:40 -07:00
parent 2f46a0e8be
commit 23042cda40
2 changed files with 6 additions and 1 deletions

View File

@ -105,7 +105,9 @@ class Random(_random.Random):
if a is None: if a is None:
try: 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: except NotImplementedError:
import time import time
a = int(time.time() * 256) # use fractional seconds a = int(time.time() * 256) # use fractional seconds

View File

@ -26,6 +26,9 @@ Library
- Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a - Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a
flush() on the underlying binary stream. Patch by akira. 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 - Issue #21398: Fix an unicode error in the pydoc pager when the documentation
contains characters not encodable to the stdout encoding. contains characters not encodable to the stdout encoding.