指的是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或贝叶斯定理的理解很差吗?
你的代码实际上回答的问题是“鉴于死亡分数是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)