减去随机数与我应该得到的平均值不匹配

问题描述 投票:0回答:1

假设您组织了一场有 2500 万参与者的比赛。在每一轮中,都会从剩下的人中随机淘汰一些人。我们应该期望进行多少轮才能有 5 名或更少的参与者?现在 25M/2^22 是最接近的高于 5 的数字,因此平均 22 轮。然而,当在 Python 中验证这一点时,我发现分布更多地累积在 15-16 左右,而不是 22-23 左右。 (我对Python不太熟悉,所以我知道我应该使用字典来计算东西等。)我的代码中有错误吗?因为理论不会说谎。

import random

lst=list()
for j in range(1,10000):
    i=0
    X=25000000
    while X > 5:
        i = i+1
        elim=(random.randint(0,X))
        X = X - elim
    lst.append(i)
    
for i in range(1,33):
    print( i, "appears", lst.count(i), "times")

print("22 appears", lst.count(22)*100/len(lst), "% of the time")
print("15 appears", lst.count(15)*100/len(lst), "% of the time")
python random average
1个回答
0
投票

random.randint() 实际上并不是随机的。我不完全确定它是如何工作的,但我已经读过它,它不是随机的,因为你不能让任何东西真正随机。据我所知,这个宇宙中只有少数事物是真正随机的。我能说的最好的办法就是寻找提供更偶数分布的库。

这是另一篇关于真随机数的文章: 我可以用python生成真实的随机数吗?

© www.soinside.com 2019 - 2024. All rights reserved.