Skip to content

程序员数学 06:概率、重试与条件判断 ​

“单次失败率 20%,重试两次就几乎不会失败”包含几个未说出的前提:总共尝试几次,各次失败是否独立,失败率是否稳定,操作是否适合重复。概率计算之前先写出模型。

有限重试的失败概率 ​

假设每次尝试独立,失败概率固定为 p=0.2;首次尝试加最多两次重试,一共最多三次。最终失败要求三次全部失败,因此:

P(最终失败)=p3=0.008=0.8%.

成功概率为 1−p3=99.2%。这里的“两次重试”不是“两次总尝试”,计数错一位就会得到另一结果。

如果失败由持续的共享故障造成,三次可能高度相关。例如后续尝试必然重复第一次的结果,最终失败率仍为 20%,不能套独立乘法。现实重试还涉及间隔、总时限、重复副作用与负载,本篇只分析已声明的概率模型。

期望尝试次数 ​

至少第一次总会执行,第二次仅在第一次失败时执行,第三次仅在前两次失败时执行。因此:

E[N]=1+p+p2=1.24.

这个推导把 N 写成三个指示变量之和,使用期望的可加性。期望可加性本身不要求独立;把“前两次都失败”的概率写成 p2 才用到了独立假设。

若每次耗时固定为 100 ms,且忽略重试等待与其他开销,那么期望尝试耗时为 124 ms。它不是单次任务一定耗时 124 ms,也不是端到端延迟的 P99。

条件概率不要看反 ​

虚构文件检测器的数据:真实损坏比例为 1%;损坏文件被标记的概率为 90%;完好文件被误标的概率为 5%。被标记后,文件真正损坏的概率不是 90%。

设 D 为损坏,F 为被标记:

P(D∣F)=P(F∣D)P(D)P(F∣D)P(D)+P(F∣¬D)P(¬D)=0.9×0.010.9×0.01+0.05×0.99≈15.38%.

用 10,000 个文件理解更直观:预期 100 个损坏,其中 90 个被标记;9900 个完好,其中 495 个被误标。所有被标记文件中,损坏占 90/(90+495)。

“在损坏条件下被标记”与“在被标记条件下损坏”是不同问题。样本比例、检测能力和数据分布变化后,结果都可能改变。

练习 ​

  1. 独立失败率为 0.1,最多两次总尝试,最终失败概率和期望次数是多少?
  2. 若所有尝试都依赖同一份暂时不可用的文件,能直接用 pn 吗?
  3. 检测器没有误报时,只要观测到标记,且标记事件概率非零,上述条件概率是多少?
查看答案与讲解
  1. 最终失败概率 0.12=0.01,即 1%;期望次数 1+0.1=1.1。
  2. 不能。需要确认尝试之间的联合分布;共享故障往往导致相关性。
  3. 在给定模型中为 1,因为分母里的误报项为 0。但“没有误报”必须是可靠前提,不能从有限样本里没观察到误报就断言总体误报率为零。

资料与延伸 ​

MIT 6.042J 阅读目录 提供条件概率、独立性和期望材料。学习时每写一个乘法,问自己是否使用了独立假设;每算一个概率,明确它是先验、条件概率还是样本频率。

继续阅读