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

使用Python计算前100次掷骰子中连续出现3次6的概率

掷100次骰子出现连续3次6的概率优化方案

原方案问题分析

  • 暴力枚举6^100种情况完全不可行:该数值远超可观测宇宙的原子总数,永远不可能跑完所有循环
  • countConsecutive 函数存在严重逻辑错误:判断条件漏写等号,且首次不匹配就直接返回False,根本无法检测数组中后续位置的连续6组合
  • 多层嵌套循环写法冗余,存在变量名重复、数组构造拼写错误等问题,运行也不可能得到正确结果

优化方案:动态规划法

我们可以通过状态动态规划实现O(n)时间复杂度、O(1)空间复杂度的计算,核心逻辑是跟踪每次掷骰子后末尾连续6的数量状态:

  • 状态定义:用dp0代表当前掷骰子后末尾0个连续6的概率,dp1代表末尾1个连续6的概率,dp2代表末尾2个连续6的概率
  • 状态转移:
    1. 本次掷出非6时,末尾连续6的数量直接清零,对应新dp0
    2. 本次掷出6时,末尾连续6的数量在上一轮基础上加1,对应新dp1、dp2
  • 最终结果为1 - dp0 - dp1 - dp2,即1减去掷完100次仍未出现连续3个6的概率

实现代码

# 初始化初始状态:还没掷骰子时,末尾0个连续6的概率为1
dp0, dp1, dp2 = 1.0, 0.0, 0.0
throw_count = 100

for _ in range(throw_count):
    new_dp0 = (dp0 + dp1 + dp2) * (5/6)
    new_dp1 = dp0 * (1/6)
    new_dp2 = dp1 * (1/6)
    dp0, dp1, dp2 = new_dp0, new_dp1, new_dp2

result = 1 - dp0 - dp1 - dp2
print(f"前100次掷骰子出现连续3次6的概率为:{result:.6f}")

运行后得到的结果约为0.930397。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:03