<p>作为一个练习,我正在编写一个程序来计算用相同的数字掷出5个骰子的几率。这个想法是通过模拟得到结果,而不是简单的数学。我的计划是:</p>
<pre><code># 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
</code></pre>
<p>问题是,运行这个程序的n值为1000000时,我得到的概率通常在0.0006到0.0008之间,而我的数学计算让我相信我得到的答案应该接近于0.0001286(即(1/6)^5)。在</p>
<p>我的程序有问题吗?我在数学上犯了什么错误?或者,如果我能够在更大的迭代中运行程序,我会发现我的结果更接近正确的答案吗?在</p>