如何计算失败后成功概率递增时的单次成功期望尝试次数?
递增成功概率下的期望尝试次数计算方法
数学原理
期望尝试次数的核心逻辑基于概率的期望定义:
- 第k次尝试的成功概率为
p_k = 0.03 + 0.002*(k-1) - 第k次成功的概率 = 前k-1次全部失败的概率 × 第k次成功的概率
- 期望E就是所有
k×(第k次成功的概率)的总和,直到p_k≥1(此时第k次必然成功,无需再计算后续项)
先确定最大尝试次数n:当p_n=1时,通过0.03 + 0.002*(n-1)=1可解得n=486,即第486次尝试必然成功。
代码实现(Python)
通过循环迭代计算每一项的贡献,维护累积的失败概率乘积即可:
# 初始化参数 initial_p = 0.03 delta_p = 0.002 expected = 0.0 # 累积前k-1次的失败概率,初始为1(第1次尝试前无失败) cumulative_fail = 1.0 k = 1 while True: p_k = initial_p + delta_p * (k - 1) # 当概率≥1时,本次尝试必然成功,计算贡献后退出循环 if p_k >= 1.0: expected += k * cumulative_fail * 1.0 break # 计算本次成功的概率贡献 expected += k * cumulative_fail * p_k # 更新累积失败概率:乘以本次失败的概率 cumulative_fail *= (1 - p_k) k += 1 print(f"期望尝试次数:{expected:.2f}")
运行后结果约为27.67,确实低于固定概率0.03时的33.33,符合预期。
为什么不能简单取平均?
你提到的“初始期望和最终期望取平均”的方法忽略了各阶段失败概率的累积效应:前几次失败的概率很高,会显著影响后续尝试的权重,直接平均无法反映这种非线性的概率变化,必须通过逐项计算每一次尝试的期望贡献才能得到准确结果。
内容的提问来源于stack exchange,提问作者Fearless Truth-Teller
相关产品推荐
相关产品推荐

