@@ -233,10 +233,8 @@ def __init_subclass__(cls, /, **kwargs):
233233 break
234234
235235 def _randbelow_with_getrandbits (self , n ):
236- "Return a random int in the range [0,n). Returns 0 if n== 0."
236+ "Return a random int in the range [0,n). Defined for n > 0."
237237
238- if not n :
239- return 0
240238 getrandbits = self .getrandbits
241239 k = n .bit_length () # don't use (n-1) here because n can be 1
242240 r = getrandbits (k ) # 0 <= r < 2**k
@@ -245,7 +243,7 @@ def _randbelow_with_getrandbits(self, n):
245243 return r
246244
247245 def _randbelow_without_getrandbits (self , n , maxsize = 1 << BPF ):
248- """Return a random int in the range [0,n). Returns 0 if n== 0.
246+ """Return a random int in the range [0,n). Defined for n > 0.
249247
250248 The implementation does not use getrandbits, but only random.
251249 """
@@ -256,8 +254,6 @@ def _randbelow_without_getrandbits(self, n, maxsize=1<<BPF):
256254 "enough bits to choose from a population range this large.\n "
257255 "To remove the range limitation, add a getrandbits() method." )
258256 return _floor (random () * n )
259- if n == 0 :
260- return 0
261257 rem = maxsize % n
262258 limit = (maxsize - rem ) / maxsize # int(limit * maxsize) % n == 0
263259 r = random ()
@@ -338,7 +334,8 @@ def randint(self, a, b):
338334
339335 def choice (self , seq ):
340336 """Choose a random element from a non-empty sequence."""
341- # raises IndexError if seq is empty
337+ if not seq :
338+ raise IndexError ('Cannot choose from an empty sequence' )
342339 return seq [self ._randbelow (len (seq ))]
343340
344341 def shuffle (self , x ):
0 commit comments