【发布时间】:2020-04-30 10:22:05
【问题描述】:
当在(几乎)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] 仅代表我试图获得的整个范围的一小部分,但是在 [1,2^63) 范围内生成的 1e11 随机整数中,我应该只是曾经接近我的边界? 使用太大的间隔时,这是预期的行为吗? 或者是因为作为一个人,我无法理解这些间隔有多大,而且我已经“足够接近”了?
顺便说一下,这只是想知道种子是否可以从 1 到 1e63 随机设置,因为可以手动将其设置为任何这些值。
【问题讨论】: