Ian*_*len 2 python probability
作为练习,我正在编写一个程序来计算使用相同数字滚动5个模具的几率.这个想法是通过模拟获得结果,而不是简单的数学.我的程序是这样的:
# rollFive.py
from random import *
def main():
n = input("Please enter the number of sims to run: ")
hits = simNRolls(n)
hits = float(hits)
n = float(n)
prob = hits/n
print "The odds of rolling 5 of the same number are", prob
def simNRolls(n):
hits = 0
for i in range(n):
hits = hits + diceRoll()
return hits
def diceRoll():
firstDie = randrange(1,7,1)
for i in range(4):
nextDie = randrange(1,7,1)
if nextDie!=firstDie:
success = 0
break
else:
success = 1
return success
Run Code Online (Sandbox Code Playgroud)
问题是运行这个程序,其值为1 000 000,这给我的概率通常在0.0006和0.0008之间,而我的数学让我相信我应该得到一个接近0.0001286(又名(1/6)^ 5)的答案.
我的程序有问题吗?或者我在这里用数学做出一些基本错误?或者如果我能够在更大的迭代中运行程序,我会发现我的结果更接近正确的答案吗?
获得特定数字五次的概率是(1/6)^ 5,但任何五个数字相同的概率是(1/6)^ 4.
有两种方法可以看到这一点.
首先,获得所有1的概率,例如,是(1/6)^ 5,因为只有一个方法可以得到1个.乘以5个骰子,得到(1/6)^ 5 .但是,由于有六种可能的数字可以相同,因此有六种方法可以成功,即6((1/6)^ 5)或(1/6)^ 4.
从另一个角度来看,第一卷给出的内容并不重要,因此我们将其排除.然后我们必须将该数字与剩余的四个卷匹配,其概率为(1/6)^ 4.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |