diff options
author | Raymond Hettinger <python@rcn.com> | 2013-10-06 04:52:06 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2013-10-06 04:52:06 (GMT) |
commit | be74a3d721f660aa276eaac1a52565b7d3546a27 (patch) | |
tree | c1bbe7e62e5d570e30c555306f23ae83ee6ab13f | |
parent | 3472fafe745954d1882658f21e54865662f62788 (diff) | |
parent | 8fe47c399174d007937c54e1fc9eb0efd2b324e9 (diff) | |
download | cpython-be74a3d721f660aa276eaac1a52565b7d3546a27.zip cpython-be74a3d721f660aa276eaac1a52565b7d3546a27.tar.gz cpython-be74a3d721f660aa276eaac1a52565b7d3546a27.tar.bz2 |
Minor clean-up of function parameters in random().
-rw-r--r-- | Lib/random.py | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/Lib/random.py b/Lib/random.py index 3fac699..4a9fbd1 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -165,18 +165,17 @@ class Random(_random.Random): ## -------------------- integer methods ------------------- - def randrange(self, start, stop=None, step=1, int=int): + def randrange(self, start, stop=None, step=1, _int=int): """Choose a random item from range(start, stop[, step]). This fixes the problem with randint() which includes the endpoint; in Python this is usually not what you want. - Do not supply the 'int' argument. """ # This code is a bit messy to make it fast for the # common case while still doing adequate error checking. - istart = int(start) + istart = _int(start) if istart != start: raise ValueError("non-integer arg 1 for randrange()") if stop is None: @@ -185,7 +184,7 @@ class Random(_random.Random): raise ValueError("empty range for randrange()") # stop argument supplied. - istop = int(stop) + istop = _int(stop) if istop != stop: raise ValueError("non-integer stop for randrange()") width = istop - istart @@ -195,7 +194,7 @@ class Random(_random.Random): raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width)) # Non-unit step argument supplied. - istep = int(step) + istep = _int(step) if istep != step: raise ValueError("non-integer step for randrange()") if istep > 0: @@ -254,21 +253,27 @@ class Random(_random.Random): raise IndexError('Cannot choose from an empty sequence') return seq[i] - def shuffle(self, x, random=None, int=int): + def shuffle(self, x, random=None): """Shuffle list x in place, and return None. Optional argument random is a 0-argument function returning a random float in [0.0, 1.0); if it is the default None, the standard random.random will be used. - Do not supply the 'int' argument. """ - randbelow = self._randbelow - for i in reversed(range(1, len(x))): - # pick an element in x[:i+1] with which to exchange x[i] - j = randbelow(i+1) if random is None else int(random() * (i+1)) - x[i], x[j] = x[j], x[i] + if random is None: + randbelow = self._randbelow + for i in reversed(range(1, len(x))): + # pick an element in x[:i+1] with which to exchange x[i] + j = randbelow(i+1) + x[i], x[j] = x[j], x[i] + else: + _int = int + for i in reversed(range(1, len(x))): + # pick an element in x[:i+1] with which to exchange x[i] + j = _int(random() * (i+1)) + x[i], x[j] = x[j], x[i] def sample(self, population, k): """Chooses k unique random elements from a population sequence or set. |