返回题库

用公平硬币模拟任意概率 pp 的事件

Probability Simulation

专题
Probability / 概率
难度
L4

题目详情

仅用一枚公平硬币,如何模拟一个发生概率为 p(0,1)p\in(0,1) 的事件?

Fair coin => game with prob p in (0,1)?

解析

pp 写成二进制小数:p=0.p1p22p=0.p_1p_2\cdots_2

反复抛硬币得到随机比特 si{0,1}s_i\in\{0,1\}

  • 若首次出现 si<pis_i<p_i,则判定“事件发生”;
  • 若首次出现 si>pis_i>p_i,则判定“不发生”;
  • si=pis_i=p_i,继续抛下一个比特。

因为随机二进制小数在 [0,1][0,1] 上均匀,上述逐位比较等价于比较一个均匀随机数与 pp


Original Explanation

Write p=0.p1p2p=0.p_1p_2\dots in binary. Flip coin => bit si{0,1}s_i\in\{0,1\}. If si<pis_i<p_i => win, if si>pis_i>p_i => lose, else keep flipping.