Secret Santa Generator vs. a Random Wheel: Which One Is Actually Fair?
"Random" isn't one thing. The mechanism behind the randomness decides what can go wrong.
Most online tools for "randomly assign everyone to someone else" — a Secret Santa generator, a coffee-run picker, a chore rotation — use one of two mechanisms under the hood: a spinning wheel that lands on a name, or a shuffle-and-pair script that randomizes a list and matches position i to position i+1. Both feel equally random to use. They are not equally safe, and the difference only shows up when it goes wrong in front of everyone.
Just need a fair draw? Draw a ladder on Ghost Leg Picker — why it structurally cannot hand someone their own name is below.
What a naive shuffle can actually produce
A plain "shuffle the list and match each person to the next one" approach, done without a specific safeguard, has two known failure modes:
- Self-assignment. Depending on how the shuffle and pairing is coded, someone can end up matched to themselves — the exact outcome a Secret Santa is supposed to prevent.
- Uneven distribution. A shuffle that isn't a provably uniform permutation (a common bug: sorting an array with a "random" comparator) can make some pairings far more likely than others, which defeats the point of "random" even when no single run looks obviously wrong.
A wheel has a related but different problem: it's built to look exciting, not to guarantee a one-to-one match across a group. Spin it once per person, independently, and you can land on the same result twice — two people give a gift to the same third person, and someone gets nothing.
What a ghost-leg ladder guarantees instead
The ghost-leg (amidakuji in Japan, 사다리타기 in Korea) is a different mechanism entirely: a set of vertical lines with randomly placed horizontal rungs. Each participant starts at the top of one line and follows it down, switching lines whenever a rung crosses, and lands at exactly one result at the bottom. Two properties fall directly out of how the structure works, not out of extra code checking for problems after the fact:
- It's a bijection. Every participant's path down the ladder ends at a different result — because the rungs only ever swap two adjacent lines' positions, tracing every path at once produces a rearrangement of the results, with no possibility of two people landing on the same one and no possibility of a result going unclaimed.
- The same ladder always gives the same answer. Because the assignment comes from a fixed structure (the rungs), not from independent per-person randomness, a shared link with the same seed reproduces the exact same result for everyone who opens it — useful for settling an argument about who actually "won" the pick.
The trade-off is that a ghost-leg ladder needs the whole group to see the same picture to trust it (or at least trust that the drawing algorithm is unbiased), whereas a wheel is more visually satisfying for a single person's turn. For a group assignment where the actual concern is "did everyone get a fair, distinct result," the structural guarantee matters more than the spin animation.
Ghost Leg Picker generates the ladder for 2–12 participants and results, traces every path, and renders the whole thing as SVG so you can see the guarantee instead of taking it on faith. No LLM, no server-side logic — the assignment math runs in your browser, and a shared link reproduces the identical result.
Related pages here: if the draw is posted by a Discord bot, the limits that post has to fit are in Discord embed character limits explained. Another rule that looks simple and quietly does something else is robots.txt matching, where a more specific Allow line can override a blanket Disallow: how to block GPTBot and ClaudeBot, and confirm it worked.