WheelMigo

The Math of No-Repeat Rounds: How Fair Is a Full Rotation?

Spin a name wheel with “no repeats until everyone has had a turn” and it feels fair. Spin one that reshuffles freely each time and it also feels fair — until the same name comes up twice in a row. So how different are they, really? We simulated both to put numbers on it.

Quick answer

A no-repeat rotation is exactly fair each round: with N names, every name is picked once every N spins — guaranteed, with no clustering. Plain reshuffle (an independent random pick each spin) is only fair on average: it repeats back-to-back about 1 in N spins and needs roughly N × ln(N) spins to cover everyone. In our 25-name simulation, no-repeat covered all 25 names in 25 spins; plain reshuffle took about 95.

Key points

  • No-repeat rounds guarantee full coverage in exactly N spins; plain reshuffle averages about N × ln(N) — roughly 95 spins to cover 25 names in our simulation.
  • Plain reshuffle produces an immediate back-to-back repeat about 1 in N spins (4% at 25 names); no-repeat rounds have none within a round.
  • A “perfect round” (all N distinct in N spins) is automatic with no-repeat but astronomically unlikely by luck — about 1 in 5.7 billion at 25 names.
  • No-repeat bounds the longest wait for any one name to at most 2N−1 spins; plain reshuffle has a heavy tail (a single name waited 88 spins at the 90th percentile in our 25-name runs).
  • It is a trade-off, not a bug: no-repeat gives up per-spin independence to guarantee turns; plain reshuffle is the right choice when each draw must be independent, like a raffle.

There are two honest ways for a name wheel to avoid being unfair, and they are not the same thing. Understanding the difference is the whole answer to “is a no-repeat wheel really fair?”

Two ways to be fair

No-repeat rounds (a full rotation): the wheel deals every name out once before anyone repeats. With 25 names, spins 1 through 25 are those 25 names in a random order, then the round resets and reshuffles. Everyone gets exactly one turn per round.

Plain reshuffle (independent picks): every spin is a fresh, independent uniform draw from all names. Any name can come up at any time — including twice in a row — because the wheel has no memory of what it just picked.

What “fair” should mean for taking turns

For calling on students or setting an order, “fair” is not only “each name is equally likely on a single spin” — both methods pass that. It also means good coverage (everyone actually gets picked soon), no clustering (no one is picked twice while someone else waits), and bounded waiting (no unlucky person waits forever). No-repeat rounds win all three by construction; plain reshuffle wins none of them with certainty.

I simulated both — here is the data

I ran a Monte Carlo simulation of both methods for classes of 10, 25, and 40 names (over 100,000 trials each) and cross-checked the coverage numbers against the exact coupon-collector formula, N × (1 + 1/2 + … + 1/N). The simulation and the formula agree to the first decimal, which is the check that the numbers below are right.

Class size (N)No-repeat: spins to cover allPlain reshuffle: average / 90th pctPerfect round by luckBack-to-back repeat rate
1010 (guaranteed)29 / 44about 1 in 2,80010% per spin
2525 (guaranteed)95 / 135about 1 in 5.7 billion4% per spin
4040 (guaranteed)171 / 236about 1 in 15 quadrillion2.5% per spin

Wait times tell the same story. With no-repeat rounds, the longest anyone can go between turns is bounded to at most 2N−1 spins (at most 49 for a class of 25). With plain reshuffle the wait has a heavy tail: over a 200-spin session with 25 names, the longest gap for a single name averaged 58 spins and reached 88 at the 90th percentile — someone routinely waits far longer than one rotation.

Reading the results

  • Coverage: no-repeat covers the whole class in exactly N spins. Plain reshuffle needs about N × ln(N) on average — nearly four rounds' worth of spins to be confident everyone has had a turn.
  • Clustering: plain reshuffle repeats a name back-to-back about 1 in N spins. In a busy 30-spin session with 25 names that is roughly one back-to-back repeat every session; with 10 names it is about three.
  • A “perfect” fair round happening by chance is effectively impossible past a handful of names — 1 in billions by 25 names — so if you want guaranteed turns, you have to enforce them, not hope for them.
  • Bounded vs unbounded waits: no-repeat caps the worst wait; plain reshuffle's worst wait keeps growing with a long session.

So which should you use?

Use no-repeat rounds when the goal is turns: calling on every student, setting a stand-up order, rotating who goes first. It guarantees coverage and caps waiting, which is exactly what “fair turns” means.

Use plain reshuffle when each draw must be genuinely independent of the last — a raffle, a coin-flip-style yes/no, or any single decision where past outcomes should not constrain the next one. Here a no-repeat rule would actually be wrong, because it would make later draws depend on earlier ones.

One honest caveat: no-repeat is not “more random” on a single spin. Within a round it is deliberately less independent — that dependency is the mechanism that guarantees everyone a turn. Both methods are uniform per spin; they differ in what they guarantee over many spins.

How this works

The figures come from a Monte Carlo simulation (Python, fixed seed, 100,000+ trials per class size) of two selection methods: no-repeat rounds (a random permutation of all N names per round, reshuffled each round) and plain reshuffle (an independent uniform draw each spin). Coverage means the number of spins until every name has appeared at least once; for plain reshuffle this is the coupon-collector problem, and the simulated mean matches the exact value N × (1 + 1/2 + ... + 1/N). “Perfect round by luck” is the exact probability N!/N^N that N independent draws are all distinct. “Back-to-back repeat rate” is 1/N. Wait-time figures come from tracking one fixed name's longest gap over a 200-spin session. WheelMigo's own selection uses crypto.getRandomValues with rejection sampling (no modulo bias); this analysis is about the selection policy, not the randomness source.

Frequently asked questions

Is a no-repeat name wheel truly random?
Each round is a uniformly random order of all the names, so within a round every arrangement is equally likely. What it is not is independent spin-to-spin — once a name has come up this round it will not come up again until the round resets. That dependency is intentional: it is how the wheel guarantees everyone a turn.
How many spins until everyone is picked?
With no-repeat rounds, exactly N spins for N names. With plain reshuffle it is the coupon-collector average of about N × ln(N) — roughly 95 spins for 25 names, and about 135 before you are 90% sure everyone has had a turn.
Does no-repeat mean a name can never repeat?
Never within the same round. The only place a repeat can happen is across a round boundary — if a new round's shuffle happens to start with the name that ended the last one — so the longest possible wait between a name's turns is bounded to at most 2N−1 spins.
Which is fairer for calling on students?
No-repeat rounds. They guarantee every student is called once per round and cap how long anyone waits, which is what fairness means for turn-taking. Plain reshuffle can call the same student twice while another waits far longer.
Is plain reshuffle ever the better choice?
Yes — whenever each draw should be independent of the last, such as a raffle or a yes/no decision. There a no-repeat rule would be incorrect because it would let earlier draws constrain later ones.

References

  1. WheelMigo — No-repeat rounds vs reshuffle
  2. WheelMigo — Random name picker fairness test (7M draws)
  3. Wikipedia — Coupon collector's problem
  4. Wikipedia — Birthday problem
  5. MDN — Crypto.getRandomValues()

← All articles