Python - 骰子和硬币游戏

问题描述 投票:1回答:1

指的是this question

“假设我滚动了一个4面模具,然后翻转了一个相当于模具滚动的公平硬币。鉴于我在硬币翻转时有三个头,那么模具评分为4的概率是多少?”

在答案中,解释结果应该是2/3。

我在Python 3中编写了以下代码:

import random

die=4
heads=3

die_max=4

tot=0
tot_die=0
for i in range(0,100000) :
    die_val=random.randint(1,die_max)
    heads_val=0
    for j in range(0,die_val) :
        heads_val+=random.randint(0,1)
    if die_val==die :
        tot_die+=1
    if heads_val==heads and die_val==die :
        tot+=1
print(tot/tot_die)

我希望它输出大约0.66的东西,但它实际上计算在0.25左右。

我对Python或贝叶斯定理的理解很差吗?

python random montecarlo
1个回答
1
投票

你的代码实际上回答的问题是“鉴于死亡分数是4,你在硬币翻转时得到三个头的概率是多少?”要使其回答预期的问题,请更改下一个if语句的条件:

import random

die=4
heads=3

die_max=4

tot=0
tot_heads=0
for i in range(0,100000) :
    die_val=random.randint(1,die_max)
    heads_val=0
    for j in range(0,die_val) :
        heads_val+=random.randint(0,1)
    if heads_val==heads : # the important change
        tot_heads+=1
    if heads_val==heads and die_val==die :
        tot+=1
print(tot/tot_heads)
© www.soinside.com 2019 - 2024. All rights reserved.