神秘圣诞老人抽签工具
输入每个人的名字,让情侣分开,然后抽签。每个人都会得到一个自己的链接,在手机上打开就能看到要给谁买礼物——没有邮件,无需注册,不用下载 App。加上预算和日期,它们会出现在每个链接里。也可以改为打印二维码卡片分给大家;如果您的规则让公平抽签无法进行,抽签工具会直接告诉您,并指出谁被卡住了。
示例名单——加上您的第一个名字,它就会清空。
8 个人,3 条规则。可以抽签了。
在名字圈上点两个名字,把他们分开。 如果您自己也参加,请保持打开。
谁参加
8 / 40输入一个名字后按回车,或者粘贴一整份名单——每行一个,或用逗号隔开。最多 40 人。
分开
情侣、室友、去年抽到过的组合——任何不该抽到某个人的人。
- Aisha ⇄ Ben
- Dev ⇄ Elena
- Finn → Grace
详细信息
可选。这里填的内容会出现在每个揭晓页面和每张卡片上。
给每个人发他的链接
抽签后链接会出现在这里——每人一个,可以用 WhatsApp、短信、Slack 或任何能发链接的方式发出去。
抽签只要一分钟。12 月剩下的都是清单,Homsy 把礼物、食物和谁带什么放在每个人的手机上。
您的名字、排除规则、详细信息和抽签结果都保存在这个浏览器里,所以您可以回来重新发送链接。不需要账号;清除浏览器数据,名单也会一起清除。
抽签怎么进行,链接里有什么
每个人可以抽到除自己以及您设定和他分开的人之外的任何人。“互相”会去掉两个人之间的两个方向;“单向”只去掉一个方向。在抽任何名字之前,抽签工具会先检查是否真的存在一种遵守所有规则的抽法。每人抽一个名字时,这是一个匹配问题——能否给每个人分到一个不同的、他允许抽到的名字——它会被精确地回答,而不是靠试和碰运气。如果答案是否定的,页面会指出原因所在的那些人:一组送礼的人,他们加起来允许抽到的名字比他们的人数还少。霍尔婚配定理说,当且仅当不存在这样一组人时,才存在符合规则的抽法,所以指出这组人,就是指出原因。
每人抽一个名字时,抽签就是打乱。整份名单用浏览器的密码学随机数生成器打乱;只有每个人都落在允许抽到的人身上,这次打乱才保留,否则就重新打乱,最多两万次。只保留通过检查的打乱,就能让每一种符合规则的抽法机会完全相同。只有当规则让符合条件的抽法少到两万次打乱都失败时,页面才会改用随机搜索;随机搜索总能找到一种,但不保证每种抽法机会相等。
每人抽两个名字时,存在性检查是一个网络流问题:每个人送两份,每个人收两份,没有人两次抽到同一个人。抽签本身是两轮单名打乱,第二轮不能重复第一轮。这让每一种符合规则的两人抽法机会接近相等,但并不完全相等;我们照实说,而不是把它说成相等。
工具下方文字里的那个数字只是简单的算术。当一组人每人从帽子里抽一个名字时,没有人抽到自己名字的情况所占的比例,等于错排数除以排列总数:四个人是 24 种里的 9 种,五个人是 120 种里的 44 种,八个人是 40,320 种里的 14,833 种。从四个人起,这个比例一直在 36% 到 38% 之间,最后稳定在 1 除以 e,约 36.8%。
每个链接带着一个人的抽签结果:活动名称、他自己的名字、他要给谁买礼物(一个或两个名字,以及您加的提示)、预算、日期、您的留言、一个四位的抽签码,以及抽签的时间(精确到分钟)。内容经过打乱处理,在消息预览里不能一眼看出名字。这不是加密:任何人打开一个链接都能看到里面的内容,所以只把每个人自己的链接发给他。打印的卡片把同一个链接做成二维码,纠错等级为 M——二维码标准规定它能恢复受损符号的约 15%——如果链接太长、在 M 级放不下,就用 L 级,约 7%。40 人的上限是我们自己定的——超过这个数,名字圈和卡片页就不好认了。揭晓页面上的日历文件包含交换礼物那天的一个全天日程,提前一周提醒,写着日期和预算,但从不写那个人的名字。名字、排除规则、详细信息和抽签结果都保存在这个浏览器里,所以组织者可以重新发送丢失的链接;不需要账号。
这些数字从哪里来
- 1. On Representatives of Subsets (Hall's marriage theorem) — P. Hall, Journal of the London Mathematical Society, 1935
- 2. A000166: Subfactorial or rencontres numbers, or derangements — The On-Line Encyclopedia of Integer Sequences
- 3. ISO/IEC 18004:2015 — QR Code bar code symbology specification — International Organization for Standardization
- 4. Crypto: getRandomValues() method — MDN Web Docs, Mozilla
上面的每个数字都取自这个页面上运行的代码。如果某个数字是我们自己的判断,而不是公开发布的数据,说明里会写明,并且不引用任何来源。 计算方法最近一次核对于 2026年9月28日。
为什么从帽子里抽神秘圣诞老人会出问题
四个人围着厨房桌子,从帽子里抽名字还行得通。人一多就不行了,算一算就知道为什么。只要有四个人或更多,没有人抽到自己名字的概率在 36% 到 38% 之间——所以大多数帽子抽签都得重来,而最后一个抽的人根本没法重来,因为剩下的只有他那一张纸条。抽签工具会替您重来,您看不到,需要多少次就来多少次。
排除规则是帽子出问题的第二个原因。它不知道其中两个名字是一对情侣,本来就会给对方买礼物;也不知道去年是同两个人互相抽到的。每多加一条规则,帽子抽签就更容易出错;规则多到一定程度,就根本不存在一种能遵守所有规则的抽法——而帽子永远不会告诉您。这个抽签工具会先检查;如果规则无法同时满足,它会指出哪些人被挤住了、被挤进了哪几个名字里,这样您就知道该去掉哪条排除规则。
第三个问题是组织者。总得有人主持抽签,而在大多数群体里,这个人也想要惊喜。在这里,配对结果默认隐藏,除非您要求查看;每个人在自己的手机上看到自己的结果,所以组织者也能像其他人一样参加。
预算和日期要在抽签前定好,而不是之后:每张卡片上都写着同一个数字,才不会有人花的钱是别人的三倍。至于清单上的其他礼物,计划圣诞礼物讲了怎么给每个人定预算,可打印圣诞准备计划表则把礼物、大餐和倒计时放在三张纸上。如果神秘圣诞老人是家庭圣诞的一部分,准备圣诞大餐讲了谁带什么,家庭开支公平分摊计算器可以在事后结清共同的花费。
每个名字旁边的提示框,正是神秘圣诞老人问卷派上用场的地方。抽签前先把问卷发下去——喜好、尺码、过敏,再加一份简短的“请别送”清单——然后把每张问卷里最有用的一句填到那个人的名字旁边。这样抽到他的人就不用只靠猜了。
说实话,每个链接都有同一个局限:它只能到达您发给的那个人。如果有人弄丢了自己的链接,在您抽签用的那台设备上打开这个页面——抽签结果保存在那个浏览器里——再发一次就行。
常见问题
这个神秘圣诞老人抽签工具怎么用?
需要每个人的邮箱地址吗?
怎么让情侣不会抽到彼此?
如果没有符合规则的抽法怎么办?
组织者能看到谁抽到了谁吗?
每个人可以给两个人买礼物吗?
人数是单数也可以吗?
如果我重新抽一次会怎样?
可以把抽签结果打印出来吗?
抽签真的是随机的吗?
抽签工具会保存我的名单吗?
相关工具
用 Homsy 把 12 月剩下的事放进一份清单
抽签只要一分钟。12 月剩下的都是清单——礼物、食物、谁带什么。Homsy 把它们放在每个人的手机上,和做事的人共享。