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:
- Write a program that randomly picks people and ensures people don't get their spouse.
- 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.
- 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).
- 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.
-
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.
y0mbo : Remember, grandma doesn't have an email address.Jeff Moser : Right, it can't rely on email. -
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.
Jeff Moser : 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. -
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
Jeff Moser : 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. -
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
-
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.
Jeff Moser : 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. -
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
Jeff Moser : 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? -
This is a software solution.
- Put everyone's name and address in a list.
- Make a copy of the list, then shuffle it.
- If any address in the original list has a matching address in the shuffled list, either shuffle again, or make a random swap until no slots have the same address in both lists. (Do this in software so you're not peeking.)
- Print envelopes in the order of the first list.
- Print letters in the order of the shuffled list.
- Stuff the envelopes without peeking.
This assumes that everyone in your family lives at the same address as their spouse. It also assumes that you can trust yourself not to peek.
Happy Holidays.
Jeff Moser : This approach is interesting, but has the added cost of postage and has a delayed responseBill the Lizard : It could easily be adapted to a text-to-speech delivery approach. -
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.
-
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.
-
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).
-
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.
0 comments:
Post a Comment