Document which part of the random module module are guaranteed.

This commit is contained in:
Raymond Hettinger 2010-09-07 00:38:15 +00:00
parent 435cb0f233
commit f763a728ad
4 changed files with 44 additions and 12 deletions

View file

@ -91,13 +91,17 @@ class Random(_random.Random):
self.seed(x)
self.gauss_next = None
def seed(self, a=None):
def seed(self, a=None, version=2):
"""Initialize internal state from hashable object.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If a is not None or an int, hash(a) is used instead.
For version 2 (the default), all of the bits are used if a is a str,
bytes, or bytearray. For version 1, the hash() of a is used instead.
If a is an int, all bits are used.
"""
if a is None:
@ -107,6 +111,11 @@ class Random(_random.Random):
import time
a = int(time.time() * 256) # use fractional seconds
if version == 2 and isinstance(a, (str, bytes, bytearray)):
if isinstance(a, str):
a = a.encode("utf8")
a = int(_hexlify(a), 16)
super().seed(a)
self.gauss_next = None