【问题标题】:Python - dice and coin gamePython - 骰子和硬币游戏
【发布时间】:2019-04-19 01:01:32
【问题描述】:

参考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】:

    您的代码实际上是在回答“鉴于骰子得分为 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)
    

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 2012-02-29
      • 2021-03-12
      • 1970-01-01
      • 2015-08-25
      • 2015-12-24
      相关资源
      最近更新 更多