0

代码很简单:

import numpy
rng = numpy.random.default_rng(0)
control = rng.choice([0,1],p=[0.5,0.5])
for i in range(100):
    print(control == rng.choice([0,1],p=[0.5,0.5]))
# Not only True gets printed

可能我遗漏了一些东西,但我理解这一点的方式是 rng.choice,使用完全相同的参数运行,如果它被播种,应该总是返回相同的东西。我错过了什么?

4

2 回答 2

2

我想你可能误解了种子的用法。以下代码应始终输出True

import numpy
rng = numpy.random.default_rng(0)
control = rng.choice([0,1],p=[0.5,0.5])
for i in range(100):
    rng = numpy.random.default_rng(0)
    print(control == rng.choice([0,1],p=[0.5,0.5]))
# Always True

当我们使用相同的种子时,我们可以得到相同的随机数序列。意思是:

import numpy
rng = numpy.random.default_rng(0)
out = [rng.choice([0, 1], p=[0.5, 0.5]) for _ in range(10)] 

无论何时运行它都out应该是相同的,但是其中的值out是不同的。

于 2020-06-22T15:21:18.533 回答
1

据我了解随机数生成,每次使用相同的种子运行程序时,您应该得到相同的 100 个输出,但是由于您从正​​态分布中采样,因此每个样本的结果应该不同。

所以每次运行这个程序时,你应该总是得到相同的真假序列。

我已经尝试过了,似乎至少可以做到这一点。

于 2020-06-22T15:25:42.113 回答