python中在指定概率分布的情况下,为什么设定随机数种子仍影响random.choice的结果?

2025-04-08 09:55:33
推荐回答(1个)
回答1:

运行结果是符合p分布的

for循环改成1000次试试,3、2、0出现的次数分别是587、299、114次,符合0.6、0.3、0.1

import numpy as np

i3 = i2 = i0 = 0
for seed in np.arange(1000):
    np.random.seed(seed)
    n = np.random.choice(5,p=[0.1, 0, 0.3, 0.6, 0])
    i3 += n==3
    i2 += n==2
    i0 += n==0
print(i3, i2, i0)

随机种子确实影响结果

但不是影响结果的分布情况,而是影响计算机产生随机数的情况,你运行1000次结果一定和我一样,就是因为我们的随机种子给的都是一样的。

随机种子

我们知道计算机无法产生真正的随机数,是通过算法产生的伪随机数,但具有类似于真正随机数的统计特征,如均匀性、独立性等。

随机种子的作用在于给定这个产生随机数算法的初值。给定后会影响以后产生随机数的具体值是多少,但不影响这些随机数的分布情况。

上面那个程序,如果我们不指定随机种子,那么结果符合p分布,但你与我结果不同,同一段代码多次运行结果也不同。如果指定随机种子,那么结果依然符合p分布,但全天下人运行结果都相同。

如果已知两粒种子(随机种子)和两个生长环境(产生随机数算法)都完完全全一样,那么可以得出长出的两个作物完全一样(忽略量子力学影响)。但这两粒种子无论相同与否都不会影响长出的作物到底是玉米还是高粱(不影响结果分布情况)。