We decided to do secret Santa in our office. And this brought up a whole heap of problems that nobody could think of solutions for - bear with me here.. this is an important problem.
We have 4 people in our office - each with a partner that will be at our Christmas meal.
Steve, Christine, Mark, Mary, Ken, Ann, Paul(me), Vicki
Desired outcome
Nobody can know who is buying a present for anybody else. But we each want to know who we are buying our present for before going to the Christmas party. And we don't want to be buying presents for our partners. Partners are not in the office.
Obvious solution is to put all the names in the hat - go around the office and draw two cards.
And yes - sure enough I drew myself and Mark drew his partner. (we swapped)
With that information I could work out that Steve had a 1/3 chance of having Vicki(he didn't have himself or Christine - nor the two cards I had acquired Ann or Mary) and I knew that Mark was buying my present. Unacceptable result.
Ken asked the question: "What are the chances that we will pick ourselves or our partner?"
So I had a stab at working that out.
First card drawn -> 2/8 Second card drawn -> 12/56
Adding them together makes 28/56 i.e. 1/2.
i.e. This method won't ever work... half chances of drawing somebody you know means we'll be drawing all year before we get a solution that works.
My first thought was that we attach two cards to our backs... put on blindfolds and stumble around in the dark grabbing the first cards we came across... However this is a little unpractical and I'm pretty certain we'd end up knowing who grabbed what anyway.
Does anybody have a solution for distributing cards that results in our desired outcome?
I'd prefer a solution without a third party..
1) You could have a third party party handle the distribution of cards in the hat so that every draw will be valid.
And after each draw the third party will remove invalid cards and put valid ones for the next draw. That should happen without any of the participants knowledge of how much cards are placed and removed.
The downside is that you will have that person know (or at least have enough information to deduce it) about who draws who.
2) Another solution would be if you take 8 cards with each persons name on one side and then every pair makes a unique mark on the other side and puts them in envelopes.
Then you shuffle the envelops, put the cards on the table unique mark up and everyone draws in sequence. In this way you could distinguish the invalid choice without knowing who's who.
3) A modification of the above idea. Use cards with names, then every couple puts the in unique marked box (or envelopes) and then in a bigger box identical to the other ones.
Then someone puts the boxes in one of the offices, opens the big boxes and choses one card from one of the small boxes. Then everyone goes in one by one.
If no one looks at his own box no one knows if he/she was drawn or not.
UPDATE There is a chance that this scheme will fail if the last pair have less then 2 valid choices.
UPDATE If you have people enter the room randomly and without knowing the order of entrance that will solve the problem. That could be done (without third party) if you have one of the participants pick people at random to go there and then taking the last one.
This I hope works just as needed. :)
On a side Note : I would go for the script - it's easier, but organizing all of the above might be a lot of fun to all.
UPDATE Well the stared look of someone looking at you will be the hint no algorithm can deal with.