How the Generator Distributes Names
The tool takes your list of names and a team count, then assigns each name using a randomized shuffle. The process: shuffle the full list using Fisher-Yates, then distribute sequentially — person 1 to Team 1, person 2 to Team 2, cycling back after the last team. If the total doesn't divide evenly, the remainder fills the first teams, so teams differ by at most one member.
Why Fisher-Yates Produces Unbiased Teams
Fisher-Yates (also called the Knuth shuffle) iterates through the list from the last element to the first. At each position, it picks a random index from the remaining unshuffled portion and swaps the two elements. Every permutation of n items is equally likely — each has exactly a 1/n! probability. No name is systematically more or less likely to land in any particular team.
The Problem with Naive Random Sorting
A common shortcut — sorting with Math.random() - 0.5 as the comparator — does not produce uniform shuffles. Comparison-based sorting algorithms assume stable, transitive comparisons. A random comparator breaks that assumption, so the distribution depends on the sort algorithm's internal branching. In V8 (Chrome/Node), a 10-element array sorted this way produces a measurably skewed result. Fisher-Yates avoids this entirely — it never uses a comparator.
What "Fair" Actually Means in Random Distribution
Random distribution is fair in a probabilistic sense: over many draws, every possible team composition is equally likely. It does not mean teams will be balanced by skill, experience, or any other attribute in any single draw. For most casual use cases — classroom groups, quiz teams, party games — this is appropriate. The randomness removes human bias from the process; no one can accuse the draw of favoritism.
When to Use Random vs. Skill-Balanced Splits
Random is the right choice when the goal is removing bias from group formation, participants are roughly equivalent in skill, or speed matters more than competitive balance. It is the wrong choice when outcomes depend meaningfully on team composition — competitive sports leagues, scored hackathons, or any context where skill imbalance would make results unfair.
Practical Use Cases
Classroom group work. Teachers avoid self-selected friend clusters and give students exposure to different collaborators.
PE class and pickup sports. Quick splits for relay races, pickup games, or tournament brackets. When all participants are the same age and level, random is usually balanced enough.
Office hackathons and workshops. Cross-functional mixing is often the explicit goal — random assignment achieves it without politics or perceived favoritism.
Pub quizzes and trivia nights. Teams of 4–6, randomly assigned — the process is part of the social ritual.