При генерации случайных целых чисел через (почти) полный интервал, разрешенный int64, сгенерированные целые числа, похоже, генерируются в меньшем диапазоне. Я использую следующий код:
import numpy
def randGenerationTest(n_gens=100000):
min_int = 2**63
max_int = 0
for _ in range(n_gens) :
randMatrix = numpy.random.randint(low=1, high = 2**63, size=(1000,1000))
a = randMatrix.min()
b = randMatrix.max()
if a < min_int:
min_int = a
if b > max_int :
max_int = b
return min_int, max_int
, который возвращает следующее:
randomGenerationTest()
>>> (146746577, 9223372036832037133)
Я согласен, что [1, 146746577] представляет собой лишь небольшую часть полного диапазона I пытаюсь получить, но в 1e11 случайных целых чисел, сгенерированных в диапазоне [1,2 ^ 63), я должен был хотя бы один раз приблизиться к моим границам? Это ожидаемое поведение при использовании слишком больших интервалов? Или это потому, что я, как человек, не могу понять, насколько огромны эти интервалы и что я уже "достаточно близок"?
Кстати, это было просто для того, чтобы узнать, можно ли произвольно установить Семя от 1 до 1e63, так как можно вручную установить любое из этих значений.