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

蒙特卡洛模拟:三个骰子和>10的统计代码合理性疑问

关于蒙特卡洛模拟骰子问题的解答

一、如何判定结果的True或False?

你的simulate函数已经实现了明确的判定逻辑:

  • 生成3个1-6的随机整数,模拟掷三个骰子的点数
  • 计算三个点数的总和
  • 若总和大于10,返回True;否则返回False

直白点说:只要三个骰子点数加起来超过10,函数就返回True,反之返回False。

二、你的代码是否合理?

核心逻辑的合理性

这段统计代码逻辑是可行的——在Python中True等价于整数1,False等价于整数0,所以true_results += simulate()确实能累加True出现的次数。

但代码存在几个可以优化的细节,让它更规范、易维护:

  1. 补全缺失的模块导入:你用到的randint来自random模块,必须在代码开头添加from random import randint,否则会触发NameError。
  2. 避免覆盖内置函数:sum是Python内置的求和函数,把它用作变量名会覆盖原有功能,建议改成total这类自定义名称。
  3. 简化返回逻辑:simulate里的if-else分支可以直接返回判断结果,不用冗余的分支语句。
  4. 简化骰子求和代码:可以用生成器表达式配合sum()函数,减少重复的randint调用。

优化后的代码示例

from random import randint

def simulate():
    """模拟三个骰子,点数和大于10则返回True"""
    total = sum(randint(1, 6) for _ in range(3))
    return total > 10

true_results = 0
trial_num = 1000
for _ in range(trial_num):
    # 用显式判断替代隐式类型转换,可读性更强
    if simulate():
        true_results += 1

# 可以直接计算模拟得到的概率
probability = true_results / trial_num
print(f"模拟{trial_num}次后,点数和大于10的概率约为{probability:.2%}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:10:26