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

展开全部

运行结果是符合p分布的

for循环改成1000次试试32313133353236313431303231363533e59b9ee7ad9431333365666331,3、2、0出现的次数分别是587、299、114次,符合0.6、0.3、0.1import 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分布,但全天下人运行结果都相同。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值