Tool
Random Seat Rotation
Reseat the whole room so nobody keeps the seat they had last time.
Random Seat Rotation
Reseat a class or team so that nobody keeps the seat they had last time. Generate an initial layout, then rotate — each rotation is a derangement of the previous one.
That is a stronger guarantee than reshuffling. A fresh random layout will, on average, leave a couple of people exactly where they were, and those are the people who notice.
It is not a stronger guarantee than it sounds, though: nobody keeps their previous seat, but somebody can return to a seat they had three rotations ago.
How the Random Seat Rotation works — and why it's fair
The first layout is a plain uniform shuffle into the grid. Every subsequent rotation is a derangement of the current layout — a permutation in which no position maps to itself — found by randomised restart: shuffle, check that every seat changed hands, retry if not.
The reason a plain reshuffle is not good enough is a well-known result. The proportion of random permutations that happen to be derangements converges on 1/e, about 37%, which means roughly 63% of fresh shuffles leave at least one person in their original seat. For a class of thirty, the expected number of people who keep their seat in a random reshuffle is exactly one, regardless of class size — and that one person is guaranteed to point it out.
That expectation being exactly one, independent of size, is one of the more surprising results in elementary probability. Each person has a 1/n chance of landing back in their own seat and there are n people, so the expected count is n × (1/n) = 1, whether the class has ten students or three hundred.
Randomised restart is efficient here precisely because derangements are common: with roughly 37% of shuffles qualifying, a valid one appears in about three attempts on average. There is no need for a cleverer algorithm, and the naive one has the advantage that every derangement is reachable.
The guarantee is strictly about consecutive rotations. The tool holds the current layout and compares against it, not against the full history, so a student can return to a seat from two rotations ago. Tracking full history would tighten the constraint quickly and, with enough rotations, make it unsatisfiable.
The grid is display only — it does not enforce a room shape, and it cannot pin anyone to a fixed position. For a class where certain students must sit at the front, seat those students by hand and rotate the rest.
When the Random Seat Rotation is fair — and when it is not
What it does guarantee
- After the first rotation, nobody keeps the seat they had immediately before — verified for every position.
- Every valid derangement is reachable, since each attempt starts from a fresh uniform shuffle.
- The rotation number is shown, so it is clear whether the current layout is an initial seating or a rotation.
What it does not
- It only compares against the immediately previous layout. Someone can return to a seat they had two rotations ago.
- There is no way to pin a person to a seat, which rules out fixed-position needs.
- It has no concept of who should sit near whom — the seating chart randomizer handles keep-apart rules.
Two worked examples
A plain reshuffle of 30 students
- About 63% of random shuffles leave at least one student in their original seat.
- The expected number who keep their seat is exactly 1 — and it is 1 for a class of 10 or 300.
- That one student will notice and will say so.
A derangement rotation of the same 30
- Every one of the 30 seats changes occupant — verified before the layout is accepted.
- A valid derangement is found in about 3 attempts on average, since roughly 37% of shuffles qualify.
- Rotation 3 can still return someone to their rotation-1 seat; only consecutive rotations are constrained.
Rooms that reseat regularly
Classrooms that rotate seating each half term are the direct case, and the derangement guarantee is what makes the rotation credible to students. A rotation that visibly left two people where they were is a rotation the class will describe as fake.
Open-plan teams doing hot-desk rotations use it identically, with the same social dynamic — the person who keeps their desk is assumed to have arranged it, whether or not they did.
Language classes and discussion seminars rotate specifically to change who sits next to whom, and the derangement constraint is a cheap proxy for that: everyone moving guarantees most neighbour pairs change, without needing to model adjacency directly.
For a seating plan with keep-apart rules rather than a rotation, the seating chart randomizer supports those. For groups rather than seats, the team generator splits a list, and the derangements guide explains the 1/e result in full.
Frequently asked questions
Why not just reshuffle?
Because roughly 63% of random shuffles leave at least one person in their original seat, and the expected number who do is exactly one — regardless of class size.
Is the expected number really one for any size?
Yes. Each person has a 1/n chance of returning to their own seat and there are n people, so the expectation is exactly 1 for a class of 10 or 300.
Can someone return to an earlier seat?
Yes. The guarantee is only against the immediately previous layout. Rotation 3 can put someone back where they sat in rotation 1.
Why not track the whole history?
Because the constraint would tighten fast and become unsatisfiable after a handful of rotations. Consecutive-only keeps it solvable indefinitely.
Can I fix a student at the front?
No. Seat those students by hand and rotate the rest — the tool cannot pin anyone.
How does it find a derangement?
Randomised restart. Since about 37% of shuffles qualify, a valid one turns up in roughly three attempts on average.
Does the grid have to match my real room?
No, it is a display convenience. Set the seats per row to whatever makes the printout readable.
Does the layout persist between visits?
No. Each session starts fresh, so keep the output if you need it next lesson.
Can I keep two students apart?
Not here. The seating chart randomizer supports keep-apart pairs within a grid.
Related tools
Seating Chart Randomizer
Fill a grid of seats at random, with keep-apart rules for the pairs that cause trouble.
Cold Call Student Picker
Draws through the whole roster before anyone repeats — and remembers between lessons.
Turn Order Generator
Straight, reversing, or snake order across rounds — first-player advantage, handled.