MCPcopy Index your code
hub / github.com/python/cpython / _randbelow_without_getrandbits

Method _randbelow_without_getrandbits

Lib/random.py:254–272  ·  view source on GitHub ↗

Return a random int in the range [0,n). Defined for n > 0. The implementation does not use getrandbits, but only random.

(self, n, maxsize=1<<BPF)

Source from the content-addressed store, hash-verified

252 return r
253
254 def _randbelow_without_getrandbits(self, n, maxsize=1<<BPF):
255 """Return a random int in the range [0,n). Defined for n > 0.
256
257 The implementation does not use getrandbits, but only random.
258 """
259
260 random = self.random
261 if n >= maxsize:
262 from warnings import warn
263 warn("Underlying random() generator does not supply \n"
264 "enough bits to choose from a population range this large.\n"
265 "To remove the range limitation, add a getrandbits() method.")
266 return _floor(random() * n)
267 rem = maxsize % n
268 limit = (maxsize - rem) / maxsize # int(limit * maxsize) % n == 0
269 r = random()
270 while r >= limit:
271 r = random()
272 return _floor(r * maxsize) % n
273
274 _randbelow = _randbelow_with_getrandbits
275

Callers 1

Calls 1

warnFunction · 0.90

Tested by 1