这是非常不可能的吗?或者是不可能的

sim*_*mo. 1 python random

所以,我是 python 的初学者(实际上是一般的编码),我试图制作这个小程序,它rods在 305 次尝试中生成随机数

import random
rods = 0
def blazerods():
    global rods
    seed = random.randint(0, 100000000000)
    random.seed(seed)
    i = 0
    rods = 0
    for i in range(0, 305):
        rnd = random.random()
        if rnd < 0.50:
            rods += 1
    print(rods)
    return rods


while 1==1:
    blazerods()
    if rods >= 211:
        break
Run Code Online (Sandbox Code Playgroud)

目标是获得 211 根或更多棒。但是,我运行该程序 30 分钟没有结果。

我的问题是:仅使用我包含的这段代码,甚至有可能获得 211 或更高的分数吗?

我是否可以在不改变机会(50%)的情况下,让杆更有可能超过 211(仍然是一个非常不可能的结果,ofc)?

random.seed(seed)甚至有用吗?

Jen*_*ens 6

棒的概率分布是二项式(305,0.5),即恰好得到n个棒的概率是(305选择n)* 0.5^305。

要获得至少 211 的概率,您需要将这些项从 211 加到305。Wolfram alpha给出的结果为 8.8e-12。

所以......这真的,真的不太可能,你将不得不等待很长时间。如果您的循环每秒运行 1000 次,您预计每 4 年就有足够的杆。

如果我没记错的话,来自 Youtube 频道 Stand-up Maths 的 Matt Parker 在他的视频“多么幸运太幸运”中对这个特殊案例有话要说。