Homsy

神秘圣诞老人抽签工具

输入每个人的名字,让情侣分开,然后抽签。每个人都会得到一个自己的链接,在手机上打开就能看到要给谁买礼物——没有邮件,无需注册,不用下载 App。加上预算和日期,它们会出现在每个链接里。也可以改为打印二维码卡片分给大家;如果您的规则让公平抽签无法进行,抽签工具会直接告诉您,并指出谁被卡住了。

Aisha Ben Carla Dev Elena Finn Grace Hugo

示例名单——加上您的第一个名字,它就会清空。

8 个人,3 条规则。可以抽签了。

每人抽几个

在名字圈上点两个名字,把他们分开。 如果您自己也参加,请保持打开。

谁参加

8 / 40

输入一个名字后按回车,或者粘贴一整份名单——每行一个,或用逗号隔开。最多 40 人。

分开

情侣、室友、去年抽到过的组合——任何不该抽到某个人的人。

  • Aisha ⇄ Ben
  • Dev ⇄ Elena
  • Finn → Grace

详细信息

可选。这里填的内容会出现在每个揭晓页面和每张卡片上。

把这个抽签工具放到您的网站上

把这两行代码粘贴到任何页面——公司内网、俱乐部网站、家庭博客都行。抽签在框里进行,它给出的链接会在这里打开。

预览嵌入效果

抽签只要一分钟。12 月剩下的都是清单,Homsy 把礼物、食物和谁带什么放在每个人的手机上。

您的名字、排除规则、详细信息和抽签结果都保存在这个浏览器里,所以您可以回来重新发送链接。不需要账号;清除浏览器数据,名单也会一起清除。

抽签怎么进行,链接里有什么

每个人可以抽到除自己以及您设定和他分开的人之外的任何人。“互相”会去掉两个人之间的两个方向;“单向”只去掉一个方向。在抽任何名字之前,抽签工具会先检查是否真的存在一种遵守所有规则的抽法。每人抽一个名字时,这是一个匹配问题——能否给每个人分到一个不同的、他允许抽到的名字——它会被精确地回答,而不是靠试和碰运气。如果答案是否定的,页面会指出原因所在的那些人:一组送礼的人,他们加起来允许抽到的名字比他们的人数还少。霍尔婚配定理说,当且仅当不存在这样一组人时,才存在符合规则的抽法,所以指出这组人,就是指出原因。

每人抽一个名字时,抽签就是打乱。整份名单用浏览器的密码学随机数生成器打乱;只有每个人都落在允许抽到的人身上,这次打乱才保留,否则就重新打乱,最多两万次。只保留通过检查的打乱,就能让每一种符合规则的抽法机会完全相同。只有当规则让符合条件的抽法少到两万次打乱都失败时,页面才会改用随机搜索;随机搜索总能找到一种,但不保证每种抽法机会相等。

每人抽两个名字时,存在性检查是一个网络流问题:每个人送两份,每个人收两份,没有人两次抽到同一个人。抽签本身是两轮单名打乱,第二轮不能重复第一轮。这让每一种符合规则的两人抽法机会接近相等,但并不完全相等;我们照实说,而不是把它说成相等。

工具下方文字里的那个数字只是简单的算术。当一组人每人从帽子里抽一个名字时,没有人抽到自己名字的情况所占的比例,等于错排数除以排列总数:四个人是 24 种里的 9 种,五个人是 120 种里的 44 种,八个人是 40,320 种里的 14,833 种。从四个人起,这个比例一直在 36% 到 38% 之间,最后稳定在 1 除以 e,约 36.8%。

每个链接带着一个人的抽签结果:活动名称、他自己的名字、他要给谁买礼物(一个或两个名字,以及您加的提示)、预算、日期、您的留言、一个四位的抽签码,以及抽签的时间(精确到分钟)。内容经过打乱处理,在消息预览里不能一眼看出名字。这不是加密:任何人打开一个链接都能看到里面的内容,所以只把每个人自己的链接发给他。打印的卡片把同一个链接做成二维码,纠错等级为 M——二维码标准规定它能恢复受损符号的约 15%——如果链接太长、在 M 级放不下,就用 L 级,约 7%。40 人的上限是我们自己定的——超过这个数,名字圈和卡片页就不好认了。揭晓页面上的日历文件包含交换礼物那天的一个全天日程,提前一周提醒,写着日期和预算,但从不写那个人的名字。名字、排除规则、详细信息和抽签结果都保存在这个浏览器里,所以组织者可以重新发送丢失的链接;不需要账号。

这些数字从哪里来

  1. 1. On Representatives of Subsets (Hall's marriage theorem) — P. Hall, Journal of the London Mathematical Society, 1935
  2. 2. A000166: Subfactorial or rencontres numbers, or derangements — The On-Line Encyclopedia of Integer Sequences
  3. 3. ISO/IEC 18004:2015 — QR Code bar code symbology specification — International Organization for Standardization
  4. 4. Crypto: getRandomValues() method — MDN Web Docs, Mozilla

上面的每个数字都取自这个页面上运行的代码。如果某个数字是我们自己的判断,而不是公开发布的数据,说明里会写明,并且不引用任何来源。 计算方法最近一次核对于 2026年9月28日。

为什么从帽子里抽神秘圣诞老人会出问题

四个人围着厨房桌子,从帽子里抽名字还行得通。人一多就不行了,算一算就知道为什么。只要有四个人或更多,没有人抽到自己名字的概率在 36% 到 38% 之间——所以大多数帽子抽签都得重来,而最后一个抽的人根本没法重来,因为剩下的只有他那一张纸条。抽签工具会替您重来,您看不到,需要多少次就来多少次。

排除规则是帽子出问题的第二个原因。它不知道其中两个名字是一对情侣,本来就会给对方买礼物;也不知道去年是同两个人互相抽到的。每多加一条规则,帽子抽签就更容易出错;规则多到一定程度,就根本不存在一种能遵守所有规则的抽法——而帽子永远不会告诉您。这个抽签工具会先检查;如果规则无法同时满足,它会指出哪些人被挤住了、被挤进了哪几个名字里,这样您就知道该去掉哪条排除规则。

第三个问题是组织者。总得有人主持抽签,而在大多数群体里,这个人也想要惊喜。在这里,配对结果默认隐藏,除非您要求查看;每个人在自己的手机上看到自己的结果,所以组织者也能像其他人一样参加。

预算和日期要在抽签前定好,而不是之后:每张卡片上都写着同一个数字,才不会有人花的钱是别人的三倍。至于清单上的其他礼物,计划圣诞礼物讲了怎么给每个人定预算,可打印圣诞准备计划表则把礼物、大餐和倒计时放在三张纸上。如果神秘圣诞老人是家庭圣诞的一部分,准备圣诞大餐讲了谁带什么,家庭开支公平分摊计算器可以在事后结清共同的花费。

每个名字旁边的提示框,正是神秘圣诞老人问卷派上用场的地方。抽签前先把问卷发下去——喜好、尺码、过敏,再加一份简短的“请别送”清单——然后把每张问卷里最有用的一句填到那个人的名字旁边。这样抽到他的人就不用只靠猜了。

说实话,每个链接都有同一个局限:它只能到达您发给的那个人。如果有人弄丢了自己的链接,在您抽签用的那台设备上打开这个页面——抽签结果保存在那个浏览器里——再发一次就行。

常见问题

这个神秘圣诞老人抽签工具怎么用?

输入每个人的名字,标出不能互相抽到的人,需要的话加上预算和日期,然后点“抽签”。每个人都会得到一个自己的链接。用 WhatsApp、短信、Slack 或任何能发链接的方式发出去;对方打开后,手机上一个包好的礼物会拆开,显示他要给谁买礼物,还有预算、日期和您加的提示。

需要每个人的邮箱地址吗?

不需要。没有邮件,没有账号,也不用注册。抽签工具给每个人一个链接,您用大家平时联系的方式发出去就行。如果有些人就在同一个房间里,可以改为打印二维码卡片,当面发给他们。

怎么让情侣不会抽到彼此?

把他们分开。选两个名字,情侣或室友选“互相”,如果只是其中一个人不能抽到另一个人——比如去年抽到过的组合——就选“单向”。您也可以在名字圈上点两个名字。每次抽签都会遵守您设的每一条规则,名字圈上会在两个名字之间画一个结来表示。

如果没有符合规则的抽法怎么办?

抽签工具会在抽之前告诉您,并指出谁被卡住了——比如:“Aisha、Ben 和 Carla 三个人加起来只能从 Dev 和 Elena 里抽:三个人,两个名字。”当排除规则让某一组人能抽的名字比人数还少时,就会出现这种情况。删掉他们的一条排除规则,再抽一次。

组织者能看到谁抽到了谁吗?

只有在组织者自己选择看的时候才能看到。抽签在组织者的手机或电脑上进行,配对结果默认是隐藏的,除非组织者打开显示,所以自己也参加的组织者既能主持抽签,又能保留惊喜。不过,每个链接都在组织者的屏幕上,而且任何人打开一个链接都能看到里面的内容——所以只把每个人自己的链接发给他,也不要自己去打开。

每个人可以给两个人买礼物吗?

可以。把“每人抽几个”调成两个,每个人就会抽两个名字,也会被抽到两次,而且没有人会两次抽到同一个人。排除规则照样有效。至少需要三个人;排除规则很多的组,更可能找不到符合规则的两人抽法——遇到这种情况,抽签工具会告诉您。

人数是单数也可以吗?

可以。神秘圣诞老人是一条链,不是一组组配对,所以 3 到 40 人之间任何人数都行。只有两个人的话就谈不上什么秘密了,所以抽签工具会让您再加一个人。

如果我重新抽一次会怎样?

每个人都会得到一个新链接。上一次抽签的链接仍然打得开,也仍然显示上一次的结果,因为每个链接都带着自己的结果。每个揭晓页面和卡片上都有一个四位的抽签码和抽签时间,所以请告诉大家哪个码算数,再把新链接发出去。

可以把抽签结果打印出来吗?

可以,有两种方式。卡片每页打印八张,每人一张,正面是名字,还有一个能打开揭晓页面的二维码;剪下来分给大家。名单会把每个名字和对应的链接打印在一起,旁边有一个方框,每发出一个就勾一个。如果您更想保留一个文件,在打印窗口里选“另存为 PDF”。

抽签真的是随机的吗?

是的。每人抽一个名字时,抽签工具用浏览器的密码学随机数生成器打乱整份名单,只有每个人都落在允许抽到的人身上,这次打乱才算数,所以每一种符合规则的抽法机会都相同。每人抽两个名字时,它会这样打乱两轮,第二轮不能和第一轮重复;这样的机会接近相等,但并不完全相等。

抽签工具会保存我的名单吗?

会,保存在这个浏览器里。名字、排除规则、详细信息和抽签结果都存放在这个浏览器的本地存储中,所以您之后可以回来,给弄丢链接的人重新发一次。不需要账号;清除浏览器数据,名单也会一起清除。

相关工具

用 Homsy 把 12 月剩下的事放进一份清单

抽签只要一分钟。12 月剩下的都是清单——礼物、食物、谁带什么。Homsy 把它们放在每个人的手机上,和做事的人共享。