问题描述
任务是模拟一对骰子的10,000次投掷,并计算当我们将两个骰子的结果相乘时,这些投掷中有多少投掷产生偶数。这个想法是要表明这应该非常接近于0.75的理论概率。
我编写了以下代码,但当它应该更接近7500时,它为我提供了8167次偶数产品抛出。
np.random.seed(193)
#np.random.randint(0,7) is a (random) die
count=0
for i in range(10000):
if np.mod(np.random.randint(0,7)*np.random.randint(0,7),2)==0:
count+=1
count
(我知道有很多方法可以做到这一点,也许还有更优雅的方法,只是想知道为什么这样做能达到目的。)
解决方法
正如评论中指出的那样,您想要np.random.randint(1,7)
,因为骰子上没有0
:
import numpy as np
np.random.seed(193)
count = 0
for i in range(10000):
if np.mod(np.random.randint(1,7) * np.random.randint(1,7),2) == 0:
count += 1
print(count)
或者只是:
import numpy as np
np.random.seed(193)
count = sum([1 - np.mod(np.random.randint(1,2)
for _ in range(10000)])
print(count)
,
random.randint(0,7)可以返回0或7。需要是random.randint(1,6)