Jan-28-2020, 06:43 PM
from random import sample sample(range(2 ** 63 - 1), 3) # OK sample(range(2 ** 63), 3) # OverflowError
Error:Traceback (most recent call last):
File "c:\...\test.py", line 4, in <module>
sample(range(2 ** 63), 3) # OverflowError
File "C:\Users\...\AppData\Local\Programs\Python\Python38\lib\random.py", line 361, in sample
n = len(population)
OverflowError: Python int too large to convert to C ssize_t
Documentation of random.sampleQuote:random.sample(population, k)
Return a k length list of unique elements chosen from the population sequence or set. Used for random sampling without replacement.
Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices).
Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample.
To choose a sample from a range of integers, use a range() object as an argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), k=60).
If the sample size is larger than the population size, a ValueError is raised.
OverflowError will be raised if the population size is larger than (2 ** 63 - 1).
Python version: 3.8.1
OS: Windows 10 pro 1909 (18363.592)