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

使用Monte Carlo方法估算两骰子和为7的概率:Python代码错误排查求助

问题排查与修正

核心错误点

  • 错误1:用浮点数模拟骰子点数
    骰子点数是1-6的整数,你用random.uniform(1,6)生成的是1到6之间的浮点数,两个浮点数相加恰好等于7的概率几乎为0,这是结果严重偏离理论值的根本原因。应该用random.randint(1,6)生成整数点数。

  • 错误2:初始值设置错误
    sum_seven(成功次数)和dice_thrown(总投掷次数)初始化为1完全不合理——初始时没有进行任何投掷,这两个值都应该从0开始,否则会直接拉偏概率计算的初始结果。

  • 错误3:样本量过小
    仅循环100次的样本量不足以支撑蒙特卡洛方法的稳定估计,误差会非常大,建议增大到10000次以上来降低波动。

修正后的代码

import random

def monte_carlo_estimation():
    sum_seven = 0
    dice_thrown = 0
    prob = 0

    # 增大样本量到10000次,提升估计稳定性
    for _ in range(10000):
        x = random.randint(1, 6)
        y = random.randint(1, 6)
        if x + y == 7:
            sum_seven += 1
        dice_thrown += 1
        prob = sum_seven / dice_thrown

    print(f"Estimate: {prob:.4f}")
    print(f"Theoretical probability: {6/36:.4f}")

if __name__ == '__main__':
    monte_carlo_estimation()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:30:22