You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python复现R语言实现的掷骰子概率计算代码

3枚六面骰子点数和概率计算Python复现指引

问题说明

当前目标为使用Python复现《Bayesian Statistics The Fun Way》中的概率求解案例,待求解问题为:

投掷3枚六面骰子,点数总和大于7的概率为多少?

原书参考结果存在一处笔误:标注总共有218种可能结果,实际3枚六面骰子的有序排列总数为6*6*6=216种,其中点数和大于7的结果共181种的结论是正确的。

原书R实现参考

原书采用三层嵌套循环遍历所有骰子组合、逐组判断计数的逻辑实现计算,对应R代码如下:

count <- 0
for (roll1 in c(1:6){
   for(roll2 in c(1:6){
       for(roll3 in c(1:6){
            count <- count + ifelse(roll1+roll2+roll3 > 7, 1, 0)
    }
  }
}

Python实现思路提示

不需要刻意使用元组、集合等复杂数据结构,直接对齐原书的朴素实现逻辑拆解步骤即可,避免不必要的逻辑混乱:

  • 首先初始化计数变量,初始值设为0,和R代码中count <- 0的作用一致
  • 三层遍历分别对应三枚骰子的点数:Python中生成1-6的整数序列可以用range(1, 7),三层嵌套循环即可覆盖所有216种有序点数组合
  • 逐组做条件判断:每遍历到一组三个点数,计算三者之和,若和大于7则给计数变量加1,对应R代码中ifelse的判断计数逻辑
  • 所有循环执行完成后,计数变量存储的就是满足点数和大于7的组合总数,除以总组合数216即可得到最终概率

补充说明:此前考虑的元组列表转集合的方案,本质是先全量存储所有组合再做统计,对于这个计算量级属于冗余操作,直接按遍历计数的逻辑写,和原书思路对齐,更不容易出错。

内容的提问来源于stack exchange,提问作者elksie5000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:42:18