优惠券收集问题:集齐一套平均要抽多少次
一套券有 A、B、C、D、E、F 六种。每次随机得到一张,六种出现的机会相同,已经有的券还会再次出现。目标是每种至少收集一张。
抽 6 次,张数刚好够一套,但只有大约 1.54% 的机会恰好集齐。把过程重复很多局,集齐的平均抽取次数是 14.7 次;若希望有九成把握集齐,则至少要准备 23 次。
这三个数字回答了不同的问题。先亲自抽一局,看看多出来的次数花在了哪里。
从六种券开始
这里的“优惠券”只表示需要收集的不同种类,也可以换成贴纸、卡片,或公平骰子的六个点数。本文讨论的是收集时间,不涉及券的面额或使用规则。
实验默认展示同一局的前 6 次抽取。点击“抽 1 次”继续,或点击“重看本局”从头核对。每次出现“重复”,抽取次数会增加,已收集的种数却不会增加。
一种可能的抽取顺序是
第 10 次才第一次见到 F,至此集齐。10 次抽取中,有 6 次带来新种类,另外 4 次是重复。换一局,集齐时间可能更早,也可能更晚。
为什么恰好 6 次集齐这么少见?第一张一定是新的;第二张必须避开第一种,成功机会是
模型的约定
把券的总种数记为正整数
从空手开始,到首次集齐为止的总抽取次数,记为
这就是经典的优惠券收集问题(coupon collector’s problem)。以下正文和实验都使用上述规则。
把集齐拆成等到下一种
刚开始,任何券都是新的。已有 5 种时,只有剩下的 1 种能推进收集;下一次推进的概率从 1 降到了
更一般地,已经有
在这段等待中,只要抽到的仍是旧券,已收集的种数就保持为
成功概率为 p,平均要等 1/p 次
先用一个更小的问题计算等待:每次成功概率固定为
至少要抽一次。如果这次成功,等待结束;如果失败,概率是
这里的“平均”也叫期望,记作
为什么平均等待存在,以及几何分布的完整计算
设
这个分布称为几何分布。采用的计数起点是 1;有些资料只数成功前的失败次数,会从 0 开始,期望也会少 1。
对每个取正整数值的等待时间,都有
原因是:若某次等待实际为
而
这也确认了正文递推式中使用有限平均数是合法的。
六个阶段的等待相加
把上面的
对六种券,逐项写出来:
| 已有种数 |
下一张是新券的概率 | 等到下一种的平均次数 |
|---|---|---|
| 0 | 1 | |
| 1 | 1.2 | |
| 2 | 1.5 | |
| 3 | 2 | |
| 4 | 3 | |
| 5 | 6 |
改动下面的总种数,再拖动“已经收集”的滑块。最后一根柱子始终最高;它表示只差最后一种时的平均等待。
单局里,总抽取次数等于各阶段等待次数之和。取平均后仍然可以逐项相加,这个性质称为期望的线性性,不要求各项独立。于是,集齐
这里定义
代入
平均而言,收齐前五种要 8.7 次,再补齐最后一种还要 6 次。“只差一种”在种数上接近终点,在时间上却可能还有很长一段。
不过,最后一种在总期望中所占的比例是
种类翻倍,平均次数不只翻倍
| 券的种数 |
集齐的平均次数 |
平均每种分摊的抽取次数 |
|---|---|---|
| 1 | 1 | 1 |
| 6 | 14.70 | 2.45 |
| 10 | 29.29 | 2.93 |
| 50 | 224.96 | 4.50 |
| 100 | 518.74 | 5.19 |
用自然对数
因此,种数很大时,平均次数的主要增长部分是
调和数的对数界从哪里来
函数
反过来,对
这两个积分分别等于
这里的箭头表示种数不断增大时,比值趋近于 1,不表示小种数时二者已经很接近。
平均次数和九成把握是两回事
“平均 14.7 次”不能回答“抽 15 次能不能集齐”。有的局很快结束,有的局会因为一直缺某一种而拖得很久。平均数没有指定有多少局已经结束。
另一个需要计算的量是
下面默认仍是 6 种券。把抽取次数从 15 调到 23,再调到 27,对比“理论平均次数”和“在此次数内集齐”两个读数。增加模拟局数,可以看随机样本中的比例怎样靠近理论曲线;拖动次数会继续使用同一批样本。
对 6 种券,有限规模下的计算结果是:
| 最多抽取次数 | 在这些次数内集齐的概率 |
|---|---|
| 6 | 约 1.54% |
| 15 | 约 64.42% |
| 23 | 约 91.08% |
| 27 | 约 95.66% |
| 36 | 约 99.15% |
其中 23、27、36 分别是达到 90%、95%、99% 集齐概率所需的最少整数次数。达到 90% 的次数称为 90% 分位数。它仍然留下最多约一成没有集齐的可能;它不是保证完成的次数。
怎样算出整条概率曲线
用 3 种券 A、B、C 先看一种精确方法。抽
因此,至少缺一种的概率为
比如抽 3 次时,
这种“先加上、再扣掉重叠”的方法叫容斥原理。推广到
从缺券事件推导容斥公式,并用递推计算概率
设
把容斥原理用于并集,再以 1 减去这个并集的概率,就得到正文公式。
实验中也可以按种数逐步推进。记
初始条件为
递推和容斥计算同一个模型。上面的实验采用递推,避免种数较多时容斥公式中大数相减导致的精度损失;模拟曲线则是独立抽样结果,不参与理论曲线的计算。
抽了 n 次,平均还缺多少种
“每一种平均被抽到一次”和“每一种都已经被抽到”容易混淆。抽
指定一种券,单次没抽到它的概率为
例如 6 种券抽 6 次,平均还缺约 2.01 种。种数很大且
这也说明为何从
平均缺少 1 种,不代表每局都只缺 1 种,也不代表某个固定的集齐概率。 部分局可能已经集齐,部分还缺几种。实验三同时显示这两个读数,可以直接比较它们。
不用整条分布,也能给集齐概率一个保守下界
至少缺一种的概率,不超过各个缺券事件概率之和;这是概率的并集上界。于是
若右侧大于 1,这个界没有提供有效的概率改进;它不是未集齐概率的精确值。后一不等式用了
希望未集齐的概率不超过
例如
固定
稀有券、保底和交换会改变什么
经典公式
如果 6 种券中某一种出现概率只有 1%,从零开始等到它首次出现,平均就需要
当各种券的概率不一样时,“已经有 5 种”也不再足以确定下一次的成功概率:要看缺的具体是哪一种。缺普通券和缺稀有券,是不同的等待状态。
已有五种等概率券后,即使接连 20 次没抽到最后一种,下一次抽中它的机会仍是
若抽到的种类会从池子里移除,保证不再重复,那么恰好抽
对独立、等概率、允许重复的抽取,决定等待速度的是当前仍缺的种类占全部种类的比例。计算平均总次数,用各阶段的等待相加;计算有限次数内完成的把握,用
参考资料
- David R. Karger,MIT 6.856J Randomized Algorithms,Fall 2002,讲义 4:Coupon collecting、期望与尾部概率,第 1、4 页。
- MIT 18.200 Principles of Discrete Applied Mathematics,Spring 2024,Lecture 3: Inclusion-Exclusion。
文中具体数值按上述模型计算。实验使用可复现的伪随机样本;随机模拟用于观察与核对,不替代公式推导。
- Title: 优惠券收集问题:集齐一套平均要抽多少次
- Author: 姜智浩
- Created at : 2026-10-21 17:00:00
- Updated at : 2026-10-21 16:57:19
- Link: https://super-213.github.io/zhihaojiang.github.io/2026/10/21/coupon-collector/
- License: This work is licensed under CC BY-NC-SA 4.0.
Loading comments…