什么是最好的低技术协议,从帽子模拟绘图名称,并确保保密?

时间:2008-11-06 13:30:07

标签: algorithm cryptography protocols

每年感恩节时,我的家人都会从帽子中抽出名字来确定他们将成为圣诞节礼物交换的“秘密圣诞老人”。对我们的家庭文化来说,重要的是家庭中没有其他人知道对方是为了让它变得有趣而得到的。选择的唯一规则是你不能选择你的配偶。如果发生这种情况,你再次画画并将配偶的名字放回帽子里。

由于今年的物流和旅行计划,我们提前庆祝圣诞节(感恩节后仅两周)。

为了有足够的时间寻找礼物,我们现在想选择名字。我们的家庭位于美国各地。有些成员可以上网,有些则不上网(例如亲爱的奶奶)。

我想要做的是拥有一个公平的协议,模拟从帽子中绘制名称,并确保一定程度的保密,而不是过于复杂。有些网站,如前drawnames.com或其他类似网站,通常会要求人们输入他们的电子邮件地址。我想确保我家人的电子邮件地址不被滥用 所以我不想相信他们到另一个网站。

我能提出的最佳方案是:

  1. 编写一个程序,随机挑选人并确保人们不会得到他们的配偶。
  2. 该节目将向我显示列表的一半,但不会告诉我谁得到了我的名字,但会告诉我我的名字和得到我妻子姓名的人。
  3. 然后,我将离开房间,程序会将另一半人员列表显示给我的妻子(包括谁有我的名字)。
  4. 然后我和我的妻子会联系每个人并告诉他们他们有谁。
  5. 我错过了更好的协议吗?更好的是,我的意思是允许更多保密。再次,由于物流和保持简单,我不想建立一个网站。

11 个答案:

答案 0 :(得分:13)

拿一些纸和一些信封。每个信封的第二个和每个纸的两个,这样你就有2“1”信封和2“1”纸,2“2”信封和2“2”纸等。

让您或您的妻子在匹配的文件上写下每对夫妇的名字,例如:您可以将您的姓名放在“1”表上,而您的妻子必须在另一张“1”表上。适当地处理匹配的信封(例子中你的地址将在“1”信封上)。

将所有纸张和信封翻过来,以便看不到任何名称或地址( 记得在纸张和信封背面写下数字,对吗?)交换这样的地方让的人做了写信封的东西。请务必将每个带编号的纸张放入带有不同编号的信封中(例如:永远不要将“1”纸放入“1”信封中)。这样,你就会知道A)没有人得到自己B)没有人得到他们重要的其他人。

并非每个答案都需要涉及计算机!只需询问离您最近的D& D播放器。 :-P

答案 1 :(得分:4)

这是一个真正的低技术解决方案。将姓名和电子邮件地址列表提供给您的朋友,并要求他们绘制姓名并通过电子邮件发送给所有人。天啊,如果你没有人,我会做的。

答案 2 :(得分:2)

嗯,必须有一个信任的元素,因为你可以轻易作弊,但如果你想简单地避免意外地看到礼物分配,如何为每个人分配一个大的随机数,为每个人创建一个列表和他们的代码编号,并为每个人打印单独的工作表与他们“绘制”的人的代码。通过这种方式,如果没有记住数字并在列表中查找它,你可能会将“Bob分配给0785286741234”解释为“Bob被分配给Kelly”。我可能会让每个人的第一个和最后几个数字相同,所以你不能简单地回想起Bob有7个东西而且只有一个随机条目从7开始。将差异深入到数字字符串中。看看它们如何在视觉上“丢失”:

0785253451234鲍勃

0785286741234凯莉

0785238761234赫尔曼

0785200281234 Lydia

答案 3 :(得分:2)

这是一个软件解决方案。

  1. 将每个人的姓名和地址放在一个列表中。
  2. 制作一份清单,然后将其改组。
  3. 如果原始列表中的任何地址在随机列表中具有匹配的地址,则要么再次进行随机播放,要么进行随机交换,直到两个列表中没有插槽具有相同的地址。 (在软件中执行此操作,这样您就不会偷看。)
  4. 按第一个列表的顺序打印信封。
  5. 按随机列表的顺序打印字母。
  6. 不要偷看信封。

这假设您家中的每个人都与其配偶居住在同一地址。它还假设你可以相信自己不要偷看。

节日快乐。

答案 4 :(得分:0)

为什么不自动向每个人发送电子邮件?您可以将名称放在一个文件中,并将其压缩为附件,以避免偷看眼睛。

答案 5 :(得分:0)

在OS X上,只需调用“say”命令行实用程序即可轻松利用文本转语音引擎。还有一些方法可以在Windows中执行此操作。

所以你可以打电话给你名单上的任何人,告诉他们听他们应该买礼物的人,然后把耳机从电脑上拿到电话上,因为你告诉你的程序说出与之相关的名字。你打电话的人。然后他们可以告诉你他们是否清楚地听到了这一点并且不是他们的配偶。

答案 6 :(得分:0)

您可以让计算机通过调制解调器拨打每个人,并在回答后使用文本转语音在线路上宣布他们的名字。这有点像政治候选人和广告商用来播放信息的自动拨号程序。或者,您可以进行设置,以便您的家人拨打您的号码和计算机答案。然后他们按下电话按钮拼写他们的名字,然后电脑告诉他们他们画了谁。

这样,名字可以通过一个简单的程序随机选择,你不必看/听谁得到什么名字。

有一些开源软件可以在linux上运行来实现这一点,尽管我从未使用它。我假设有一个等效的开源窗口。

我认为即使他们没有电子邮件,您的整个家庭也可以使用电话。

答案 7 :(得分:0)

使用你的邻居:

准备带有名称的N个信封。

准备N个名单,其中包括配偶名称,例如

  “鲍勃(莫尔瓦的配偶)”

离开房间并要求你的邻居做随机匹配。 普雷斯托。将信封亲自或通过美国邮件发送给人员

嫁给圣诞节

答案 8 :(得分:0)

一个简单的解决方案:

  • 在卡片上写下每个名字并关闭它。
  • 对于每对夫妻,将一个放在堆栈A上,另一个放在堆栈B上。
  • 将单打分为A和B.(你必须知道谁在哪个堆栈上)。
  • 将堆栈B上的注释分配给堆栈A上的某个人,反之亦然。
  • 如果有一个奇数,请将其中一个单打(盲)分开并将其分配给另一个。 (这个人获得自己的可能性很小)但你可以通过自己拿卡并与其他人交换来解决这个问题。

答案 9 :(得分:0)

我不知道这对你来说是否为时已晚。我刚刚创建了一个Web应用程序,它将执行与此类似的操作 - http://www.secretsantaswap.com/

您可以从Gmail / Hotmail / Outlook导入联系人,并且可以指定彼此不匹配的子组(例如,bill和lisa从不希望获得彼此的名字)。我给每个参与者发送了他们的目标参与者可以拥有相同的电子邮件地址(例如,父母可以收到他们孩子的所有电子邮件)。

答案 10 :(得分:0)

今年我们交换礼物时,我建议http://www.secretsanta.com。我妹妹负责,她当时没有网络连接,因此没有使用。

如果我没记错的话,它可以跟踪前几年并且可以排除,以便来自同一家庭的人不会让每个人都过来。