如何设计实验从100枚硬币中找出正面概率小于0.5的不公平硬币
更高效的筛选方案:分组快速排除+序贯检验,总抛掷次数可降低90%以上
你原来的固定样本量方案最大的问题是无差别给所有硬币分配相同的抛掷次数,大量次数浪费在很容易就能判定为公平的硬币上,而且误判率没有严格控制。推荐以下两步走的方案:
第一步:分组粗筛,快速排除绝大多数公平硬币
- 把100枚硬币随机分成20组,每组5枚,每枚硬币统一抛掷5次,统计每组的总正面次数
- 公平硬币单抛5次的期望正面数为2.5,单组总期望正面数为12.5。如果某组总正面数≥10,直接整组排除(如果组内存在不公平硬币,总正面数的期望会显著低于12.5,这个阈值可以根据你对不公平硬币正面概率的预估调整,差距越大阈值可以设得越高)
- 通常一轮粗筛就能排除80%以上的分组,剩余候选硬币不会超过10枚,这一步总抛掷次数仅为500次。
第二步:剩余候选用序贯概率比检验(SPRT)精准判定
针对剩下的候选硬币,不需要抛固定次数,抛到能明确判定属性就停止:
- 先设定两个假设:H0:当前硬币为公平硬币(p=0.5),H1:当前硬币为不公平硬币(p=p1,p1取你预估的不公平硬币正面率,不确定的话可以取保守低值如0.4)
- 设定可接受的错误阈值:α=0.05(把公平硬币误判为不公平的概率),β=0.05(把不公平硬币误判为公平的概率)
- 每抛一次更新似然比:抛出正面时似然比乘
p1/0.5,抛出反面时乘(1-p1)/0.5- 似然比 ≤
β/(1-α)时,直接判定为目标不公平硬币,停止抛掷 - 似然比 ≥
(1-β)/α时,判定为公平硬币,直接排除,停止抛掷
- 似然比 ≤
- 这个方法单枚硬币平均仅需抛掷几十次就能得出结论,哪怕不公平硬币和公平硬币的正面率差距只有0.1,总抛掷次数也不会超过2000次,远低于原方案的100万次总抛掷量。
额外优化(完全不知道不公平硬币的p值时用)
如果你完全不清楚不公平硬币的正面率有多低,可以用自适应多臂老虎机的汤普森采样策略,每次优先给当前正面率最低的几枚硬币分配抛掷次数,越可能是目标的硬币抛的次数越多,公平硬币会被快速停止分配,总抛掷次数还能再降30%左右。
注:原固定1万次的方案不仅总次数多,当不公平硬币正面率接近0.5时,很容易出现某枚公平硬币运气差正面数更少的误判,而上述方案可以严格把误判率控制在你设定的阈值内。
内容的提问来源于stack exchange,提问作者saber
相关产品推荐
相关产品推荐

