The last time we had a topic about secret santa
, the goal was to make sure that, once you knew who your recipient was, you considered everyone aside from yourself as equally likely to be your secret santa; and also the method was guaranteed to finish in finite time, without the possibility of having to “redraw names” perpetually.
This time you want non-repetition of recipients from year to year. The way I see it, you begin with no one having had a previous recipient, so the first year is a normal secret santa, drawn by whatever method you prefer. We can look at an n×n “checkerboard”, with names along the axes, where square (x, y) represents the event “person x is santa for person y”. After Christmas, squares that were used this year get crossed off, and cannot be used next year. Year after year, more squares get crossed off.
At any particular year, we start off with the current checkboard, representing a directed graph of allowed santa-recipient relationships. I do not see a “natural” way to assign names from such a graph, short of making a set of envelopes for every valid assignment of names, putting each set of envelopes in a box, and choosing a box at random using some desirable probability distribution. That’s easy enough to simulate with a computer program, but it’s not “interactive” the way drawing names from a hat is.
Also, having organized a secret santa this year (making use of the “all other participants are equally likely to be my santa” solution from the previous thread), I used a script of my own devising that met the conditions of the previous thread. Its output consisted of one file with the santa-recipient graph, which I have not yet opened, and whole batch of files, one per person, that at the end of the script contained the address of the recipient, and the santa’s name in the filename. That way I was able to send out the address files to the santas, without myself knowing who got whom. But if it becomes necessary, I’ll be able to check.
I’d be interested if there is a “nice” way to assign santas when the possibilities are restricted by who has previously gotten whom, but I’m not sure there is one.