views:

1087

answers:

11

Each year at Thanksgiving, my family has drawn names out of a hat to determine who they'll be a "Secret Santa" for the Christmas gift exchange. It's important to our family culture that no one else in the family knows who each other got in order to keep it interesting. The only rule to the selection is that you can't pick your spouse. If that happens, you draw again and put your spouse's name back in the hat.

Due to logistics and travel plans this year, we're celebrating Christmas early (only two weeks after Thanksgiving).

In order to allow for plenty of time to look for gifts, we'd like to select names now. Our family is located across the U.S.A. Some members have access to the Internet and some don't (e.g. my dear Grandma).

What I would like to do is have a fair protocol that simulates drawing names out of a hat and ensures some level of secrecy without being overly complex. Some websites, like the former drawnames.com or others like it usually require people to put in their email address. I want to make absolutely sure that my family's email addresses don't get abused so I don't want to trust them to another site.

The best protocol I can come up with is:

  1. Write a program that randomly picks people and ensures people don't get their spouse.
  2. The program will show me half the list but will not show me who got my name, but will show me whose name I have and the person who got my wife's name.
  3. Then, I will leave the room and the program will display the other half of the list of people to my wife (which will include who has my name).
  4. My wife and I will then contact each person and tell them who they have.

Am I missing a better protocol? By better, I mean something that would allow more secrecy. Again, due to logistics and to keep things simple, I don't want to have to build a website.

A: 

Why not automatically send everyone an email? You can put the name in a file and zip it as an attachment to avoid peeking eyes.

Gamecat
Remember, grandma doesn't have an email address.
y0mbo
Right, it can't rely on email.
Jeff Moser
A: 

On OS X it is very easy to take advantage of the Text-to-speech engine, just by calling the "say " command line utility. There are also ways to do this in windows as well.

SO you could ring up whoever is on your list, tell them to listen for who they should buy a gift for, and put a headphone from the computer up to the telephone, as you tell your program to say the name associated with the person you are calling. They can then tell you if they heard it clearly and that it wasn't their spouse.

alxp
Interesting idea. It might be a bit hard logistically to play things loud enough so the person on the other side hears it but I don't.
Jeff Moser
On the other hand, this is a "fun" solution for other participants.
Jeff Moser
+2  A: 

Well, there has to be an element of trust since you could easily cheat, but if you want to simply avoid accidentally seeing the gift assignments, how about assigning a large random numbers to everyone, the create a list for everyone of people and their code numbers, and print individual sheets with for each person with the code of the person they "draw". In that way, without the effort of memorizing the number and looking it up on the list, you likely interpret "Bob got assigned to 0785286741234" as "Bob got assigned to Kelly". I'd probably make the first and last few digits the same for everyone so you can't simply recall that Bob got 7-something and there was only one random entry starting with a 7. Bury the differences deeper into the numerical string. See how they get "lost" visually:

0785253451234 Bob

0785286741234 Kelly

0785238761234 Herman

0785200281234 Lydia

AgentThirteen
Right, it'd involve trust with me (e.g. I don't maliciously give someone that's hard to get a gift for), but that's not really the problem. You do bring up an interesting two-phase protocol possibility of handing out ticket numbers and then calling out names like a raffle though.
Jeff Moser
+11  A: 

Get some paper and some envelopes. Number two of each envelope and two of each paper so that you have 2 "1" envelopes and 2 "1" papers, 2 "2" envelopes and 2 "2" papers, etc.

Have either you or your wife write every couple's names on matching papers, for example: you could put your name on a "1" sheet and your wife would have to be on the other "1" sheet. Address the matching envelope appropriately (your address would be on both "1" envelopes in the example).

Turn all of the papers and envelopes over so that none of the names or addresses can be seen (you did remember to write the numbers on the back of the paper and envelopes, right?) Swap places so that the person that did not do the writing stuffs the envelopes. Just be sure to put every numbered paper into an envelope with a different number (e.g.: never put a "1" paper into a "1" envelope). That way, you'll know that A) nobody got themselves and B) nobody got their significant other.

Not every answer needs to involve a computer! Just ask your nearest D&D player. :-P

A: 

You could have your computer dial each person via modem and use text-to-speech to announce their name over the line after an answer. It's sort of like the auto-dialer programs that political candidates and advertisers use to play you a message. Alternatively you could set it up so that your family calls your number and the computer answers. Then they push phone buttons to spell their name and the computer then tells them who they drew.

That way the names can be randomly selected by a simple program, and you don't have to see/hear who gets what names.

There is open source software that can run on linux to do this, although I have never used it. I assume there's an open source windows equivalent.

I assume your entire family has access to telephone even if they have no email.

Mnebuerquo
This is sort of like alxp's solution. His is a bit more low-tech and works since I don't have a modem.I'll probably end up doing something that involves text-to-speech since it provides good secrecy.
Jeff Moser
A: 

Use your neighbor:

Prepare N envelopes with names on them.

Prepare N name sheets, that include the spouse names on them e.g

"Bob (spouse of Molva)"

Than leave the room and ask your neighbor to do the random matching. Presto. Give the envelopes to the persons either personally or via US mail

Marry Christmas

bgbg
This would work, but it has a bit of an overhead to work things out with a trusted third party. Can you think of an approach that doesn't need someone outside the list of people in the exchange?
Jeff Moser
+2  A: 
Bill the Lizard
This approach is interesting, but has the added cost of postage and has a delayed response
Jeff Moser
It could easily be adapted to a text-to-speech delivery approach.
Bill the Lizard
A: 

An easy solution:

  • Write each name on a card and close it.
  • For each couple, put one on stack A and the other on stack B.
  • Divide the singles over A and B. (You have to know who is on which stack).
  • Assign the notes on stack B to someone on stack A and the other way round.
  • If there is an odd number, keep one of the singles (blind) apart and assign that to another. (There is a slight chance that person gets himself) but you can counter that by taking the card yourself and swap it with another if it is you.
Gamecat
+3  A: 

Here's a real low tech solution. Give the list of names and email address to a friend of yours and ask them to draw the names and email everyone. Hell, I'll do it if you don't have anyone.

Kevin
A: 

Hey.

I don't know if this is too late for you. I just created a web app that will do something very similiar to this - http://www.secretsantaswap.com/

You can import contacts from Gmail/Hotmail/Outlook, and you can designate subgroups that won't be matched with one another (e.g. bill and lisa never want to get each other's names). I email each participant with their target. Participants can have the same email address (for instance, a parent could receive all of the emails for their child).

dancarlson
A: 

When we did exchange gifts this year, I suggested http://www.secretsanta.com. My sister was in charge and she didn't have an internet connection at the time so it wasn't used.

If I remember correctly, it can keep track of previous years and can make exclusions so that people from the same family don't get each over.

chrish