所以,我是 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)甚至有用吗?
棒的概率分布是二项式(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 在他的视频“多么幸运太幸运”中对这个特殊案例有话要说。
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |