跳至正文
杂学书库让好奇心有所归处
简体中文

最后一张最难集齐:赠券收集问题(Coupon Collector’s Problem)

如果你收集过零食袋里附赠的贴纸,大概会记得这样的经历:一开始几乎每拆一袋都能拿到新贴纸,感觉很快就能集齐。可是等到贴纸册快要贴满时,拿到的却总是已有的贴纸,最后那一两张怎么也出不来。这并不是运气不好,而是概率本来就是这样运作的。用数学来解释这一现象的,正是“赠券收集问题(Coupon Collector’s Problem)”。

简单来说,赠券收集问题是一个概率问题,它问的是:“当多种类型中随机出现一种时,平均要抽多少次,才能把所有类型至少各集齐一次?”关键在于,答案比想象的大得多,而且其中大部分次数都花在等待最后几种上。

本文将依次介绍赠券收集问题是什么、计算平均次数的原理、用数字呈现的具体例子,以及这一问题在生活与技术中的应用和需要注意的地方。


最后一张代价最高:赠券收集问题

什么是赠券收集问题

木桌上放着一本几乎贴满、只剩几格空位的贴纸册,旁边是撕开的零食袋和一堆重复的贴纸

这个问题的名称来自一种促销活动:每个麦片盒里放一张赠券,集齐所有种类就能换取奖品。从数学上看,它设定了以下条件。

(1) 种类数量是固定的
需要收集的赠券一共有 n 种,收集者事先知道这个数字。

(2) 每次随机出现一张
每买一盒,n 种中的某一种会以相同的概率出现,之前出现过什么不会影响下一次的结果。

(3) 会出现重复
已经拥有的赠券可能再次出现。多次拿到同一张赠券,正是让收集过程变长的原因。

换成骰子来说,这就相当于问:“平均要掷多少次骰子,六个面才会都至少出现一次?”


平均次数如何计算

绿色毛毡桌面上骰子正在滚动,多颗骰子四散开来,朝上的点数各不相同

如果把收集过程分成若干个“直到获得一种新类型为止”的阶段,计算就会变得简单。

(1) 一开始什么都是新的
手里什么都没有时,第一次抽到的必然是新类型,所以一次就够了。

(2) 收集得越多,出现新类型的概率越低
如果已经拥有 k 种,那么出现新类型的概率是 (n – k) / n。把成功概率为 p 的事情反复进行直到成功,平均需要 1 / p 次,因此这一阶段平均需要 n / (n – k) 次。

(3) 把所有阶段加起来
把各阶段的平均值相加,总平均次数就是 n × (1 + 1/2 + 1/3 + … + 1/n)。括号内的和称为调和数,当 n 变大时,总次数大约按 n × (n 的自然对数) + 0.577 × n 增长。法国数学家皮埃尔-西蒙·拉普拉斯(Pierre-Simon Laplace)也在 1812 年的概率论著作中讨论过这个问题。

用骰子实际算一算就很好理解。平均来说,第一个面需要 1 次,第二个新面需要 6/5 次,第三个需要 6/4 次,第四个需要 6/3 次,第五个需要 6/2 次,最后第六个需要 6/1 次。全部相加约为 14.7 次,其中仅等待最后一个面就平均要花 6 次。

从这个式子可以看出,在最后一个阶段,也就是只剩一种时,光是这一种就平均要等 n 次。已经收集的种类越多,遇到新类型就越难,正是这种结构拉长了收集的时间。

6种赠券以相同概率独立抽取时的说明图:已拥有0种、3种、5种时,获得新种类的概率依次降为6/6、3/6、1/6,抽到下一个新种类的平均等待次数依次增至1次、2次、6次。集齐全部的平均次数为14.7次,且不保证一定能集齐。
等概率、独立抽取的6种示例。平均次数并不保证每个人都能集齐。原理参考:MIT 6.042 Lecture 22, Tufts University Coupon Collector Problem。

用数字看收集的现实

白色桌面上打开的扭蛋壳之间散落着多个相同的动物玩具,只有一只金色的猫玩具单独放在一旁

把计算结果换成具体数字,就能清楚看出它与直觉有多大差距。

  • 骰子(Die):如前所述,要看到全部六个面平均约需掷 14.7 次。看似六次就够,实际却超过两倍。
  • 10 种赠券(Ten Coupons):平均约需 29.3 次。
  • 50 种赠券(Fifty Coupons):平均约需 225 次。其中集齐前 25 种只需约 34 次,而集齐其余 25 种则需约 191 次。
  • 100 种赠券(One Hundred Coupons):平均约需 519 次,超过种类数的五倍。

这里的数字只是平均值,现实中花费更长时间的人也很多。此外,如果故意把某些种类放得很少,作为“稀有卡”,那么期望次数会比各种类概率相同时更大。


赠券收集问题的应用与注意事项

放着两本贴纸册的桌子上,两个人的手正在互相交换彩色卡片

这个问题的应用远不止贴纸册,它出现在许多领域。

(1) 促销与消费设计
随机出现的收集型商品,其结构会让人为了得到最后几种而反复购买同一商品。站在消费者的角度,只要事先算一算期望花费,就能减少冲动消费。

(2) 计算机科学与算法
在估算随机选取的元素要多久才能把所有情况各经历一次时,就会用到这一计算,它也是随机算法教材中的经典例题。

(3) 交换可能就是答案
多人一起收集并互相交换重复的物品,每个人需要购买的数量会比独自收集时大幅减少。因为自己多出来的重复品,对别人来说可能正是缺少的那一张。

(4) 估算剩余次数的标准
如果已经集齐了多种,只需对剩下的种类用同样的方法计算即可。例如,在 50 种中已经集齐 49 种,就意味着平均还要再抽 50 次才能得到最后一张。

不过,实际商品中各种类的出现比例往往不同,或者并不公开,因此这一计算只能作为出发点。


赠券收集问题告诉我们,“收集得越多,越难得到新的”这一简单事实会造成多么大的差别。最后一张迟迟不出现,并不是运气不好,而是概率早已铺好的路。

开始收集之前,先算一算大概需要多少次,再找几个可以分享重复品的朋友,这就是明智收集的第一步。

将本文保存为PDF

购买当前文章的所选语言版本。

US$1.00
所选语言: 简体中文

US$1.00 · 一篇文章 · 一种语言

一次购买后,登录同一账号即可再次下载所购版本。

查看PDF样本 ↗文章仍可免费阅读。样本展示PDF的字体和版式。

卖家信息

商号
아카이지
代表人
안호원
营业登记号
530-02-04118
网络销售申报编号
2026-경기군포-0626
申报机关
경기도 군포시
营业地址
경기도 군포시 산본천로 119-9, 1109동 405호 (산본동, 주공아파트)
托管服务提供方
카페24(주)
联系邮箱
sgjjojo@gmail.com
联系电话
010-4194-0821

查看商家登记信息(韩国公平交易委员会)