为什么以下代码没有给出大约0.75的返回概率?

问题描述

任务是模拟一对骰子的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)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...