python - Python - 骰子和硬币游戏
问题描述
提到这个问题:
“假设我掷出一个 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)
推荐阅读
- java - Jersey Rest API 404 未找到
- c++ - C++ 重载布尔运算符
- angular - 使用firebase将promise值分配给角度全局值时的时间失败
- dataset - 如何在我的 Colab 笔记本上下载 kaggle 数据集?
- django - 使用 pytest 和 factory-boy,我如何为非传统类型的对象创建工厂?
- c# - Revit API - C# - 如何在视口上设置视图标题
- c# - 从 SOAP 响应中读取二进制附件数据
- java - Azure 数据工厂中不带冒号的格式化时间 (Java SimpleDateFormat)
- css - 如何为特定材料选择样式
- python - 使用 Pandas 从 API 构建时间序列数据集