Generators FIELD NOTES · 4 MIN READ
Shuffle, Then Deal: How Random Teams Stay Fair
Fair team splits in two steps: a Fisher–Yates shuffle that favors no ordering, then round-robin dealing that guarantees sizes within one.
Fair teams come from two cheap steps: shuffle the names so every ordering is equally likely, then deal them out like cards, one to each team in turn. Neither step is clever on its own — the fairness comes from the pairing, because a truly random order plus a fixed dealing rhythm leaves no room for favoritism to hide.
Step one: a shuffle with no favorites
The generator uses the Fisher–Yates shuffle: walk the list from the last position to the first, swapping each name with a randomly chosen one at or before it. Done exactly this way, every one of the possible orderings of your list has an equal chance of being produced — the property that makes everything downstream fair. (Naive shuffles that pick any random slot for every pass, including slots already behind the pointer, do not have this property; they over-weight some arrangements.) The shuffle is seeded optionally, so the same seed reproduces the same split — the mechanics are the same ones covered in random sampling explained.
Step two: deal round-robin
The shuffled names are then dealt like a card game: the first name to Team 1, the second to Team 2, and so on, wrapping back to Team 1 after the last team. A real run — eight names, three teams, seed 7 — produced Team 1: Dave, Carol, Gina · Team 2: Hank, Frank, Alice · Team 3: Eve, Bob, sizes 3, 3, 2. That near-even result is guaranteed, not lucky: with n names dealt to k teams, sizes can only be ⌈n/k⌉ or ⌊n/k⌋, so they never differ by more than one, and no retry loops or manual nudging are ever needed.
Two ways to ask, one way to answer
You can specify the number of teams ("make 3 teams") or the team size ("4 per team") — the tool derives whichever you left out. Team size mode computes the team count as the ceiling of people divided by size: our real run of ten people at four per team produced three teams with sizes 4, 3, 3 (F, J, D, A / E, I, G / C, H, B). The derived count never exceeds your headcount, and if you explicitly request more teams than names, the tool refuses rather than minting empty teams. Names can arrive one per line or comma-separated, and duplicates are dealt as separate people — two Bobs occupy two slots.
Random is fair, not smart
The split is fair in one precise sense: every person's chance of landing on any given team is equal, and every full assignment of names to teams is equally likely. It is not skill-balanced — random can put all three strong players on one team, and over a single split that's just bad luck working as designed. If strength balance matters, the fixes are human: captain-picks or a snake draft. One structural note: straight round-robin dealing hands Team 1 the first pick of every round, but because the order was fully shuffled first, there is no stable advantage to inherit — rerun with a new seed and the "advantaged" slot changes hands.
Random is fair, not smart — and it has no memory of relationships. The split gives every person an equal chance of landing with any teammate, but it cannot respect constraints, because there are none: if two people must not be on the same team (same household, conflicting schedules), the only supported fix is to edit the list before splitting or swap members by hand afterward. Tools built for constrained pairing exist — Secret Santa pairing takes an exclusion list — but the team generator deliberately stays simple: one shuffle, one deal, every name placed.
Try it yourself
Paste your roster into the Random Team Generator — choose teams-by-count or people-per-team, add a seed if the split needs to be verifiable, and get balanced teams in one pass. A plain list shuffle or item pick is the Randomizer's job, and once teams exist, the Tournament Bracket Generator takes over for knockout play.