程序员数学 06:概率、重试与条件判断
“单次失败率 20%,重试两次就几乎不会失败”包含几个未说出的前提:总共尝试几次,各次失败是否独立,失败率是否稳定,操作是否适合重复。概率计算之前先写出模型。
有限重试的失败概率
假设每次尝试独立,失败概率固定为
成功概率为
如果失败由持续的共享故障造成,三次可能高度相关。例如后续尝试必然重复第一次的结果,最终失败率仍为 20%,不能套独立乘法。现实重试还涉及间隔、总时限、重复副作用与负载,本篇只分析已声明的概率模型。
期望尝试次数
至少第一次总会执行,第二次仅在第一次失败时执行,第三次仅在前两次失败时执行。因此:
这个推导把
若每次耗时固定为 100 ms,且忽略重试等待与其他开销,那么期望尝试耗时为 124 ms。它不是单次任务一定耗时 124 ms,也不是端到端延迟的 P99。
条件概率不要看反
虚构文件检测器的数据:真实损坏比例为 1%;损坏文件被标记的概率为 90%;完好文件被误标的概率为 5%。被标记后,文件真正损坏的概率不是 90%。
设
用 10,000 个文件理解更直观:预期 100 个损坏,其中 90 个被标记;9900 个完好,其中 495 个被误标。所有被标记文件中,损坏占
“在损坏条件下被标记”与“在被标记条件下损坏”是不同问题。样本比例、检测能力和数据分布变化后,结果都可能改变。
练习
- 独立失败率为 0.1,最多两次总尝试,最终失败概率和期望次数是多少?
- 若所有尝试都依赖同一份暂时不可用的文件,能直接用
吗? - 检测器没有误报时,只要观测到标记,且标记事件概率非零,上述条件概率是多少?
查看答案与讲解
- 最终失败概率
,即 1%;期望次数 。 - 不能。需要确认尝试之间的联合分布;共享故障往往导致相关性。
- 在给定模型中为 1,因为分母里的误报项为 0。但“没有误报”必须是可靠前提,不能从有限样本里没观察到误报就断言总体误报率为零。
资料与延伸
MIT 6.042J 阅读目录 提供条件概率、独立性和期望材料。学习时每写一个乘法,问自己是否使用了独立假设;每算一个概率,明确它是先验、条件概率还是样本频率。
继续阅读
- 习题与解析
- 习题与解析
- 习题与解析