python/dist/src/Lib random.py,1.66,1.67
Update of /cvsroot/python/python/dist/src/Lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18618 Modified Files: random.py Log Message: Fulfill Martin's request to use try/except rather than a "look before you leap" approach. Makes the early call to os.urandom() unnecessary. Index: random.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/random.py,v retrieving revision 1.66 retrieving revision 1.67 diff -u -d -r1.66 -r1.67 --- random.py 3 Sep 2004 19:09:22 -0000 1.66 +++ random.py 5 Sep 2004 00:00:41 -0000 1.67 @@ -44,6 +44,8 @@ from math import log as _log, exp as _exp, pi as _pi, e as _e from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin from math import floor as _floor +from os import urandom as _urandom +from binascii import hexlify as _hexlify __all__ = ["Random","seed","random","uniform","randint","choice","sample", "randrange","shuffle","normalvariate","lognormvariate", @@ -59,13 +61,6 @@ BPF = 53 # Number of bits in a float RECIP_BPF = 2**-BPF -try: - from os import urandom as _urandom - from binascii import hexlify as _hexlify - _urandom(1) # verify that urandom is implemented -except (ImportError, NotImplementedError): - _urandom = None - # Translated by Guido van Rossum from C source provided by # Adrian Baddeley. Adapted by Raymond Hettinger for use with @@ -111,11 +106,11 @@ """ if a is None: - if _urandom is None: + try: + a = long(_hexlify(_urandom(16)), 16) + except NotImplementedError: import time a = long(time.time() * 256) # use fractional seconds - else: - a = long(_hexlify(_urandom(16)), 16) super(Random, self).seed(a) self.gauss_next = None @@ -620,11 +615,11 @@ """ if a is None: - if _urandom is None: + try: + a = long(_hexlify(_urandom(16)), 16) + except NotImplementedError: import time a = long(time.time() * 256) # use fractional seconds - else: - a = long(_hexlify(_urandom(16)), 16) if not isinstance(a, (int, long)): a = hash(a) @@ -759,14 +754,10 @@ def random(self): """Get the next random number in the range [0.0, 1.0).""" - if _urandom is None: - raise NotImplementedError('Cannot find hardware entropy source') return (long(_hexlify(_urandom(7)), 16) >> 3) * RECIP_BPF def getrandbits(self, k): """getrandbits(k) -> x. Generates a long int with k random bits.""" - if _urandom is None: - raise NotImplementedError('Cannot find hardware entropy source') if k <= 0: raise ValueError('number of bits must be greater than zero') if k != int(k):
participants (1)
-
rhettingerīŧ users.sourceforge.net