How the Splitter Builds Fair, Balanced Teams
AnyTool Team Splitter parses your people one per line (blank lines dropped, whitespace trimmed) into a pool, then shuffles the whole pool once with a Fisher–Yates shuffle powered by the Web Crypto API (crypto.getRandomValues via rejection sampling) — so every person is exactly equally likely to land on any team and there is no modulo bias. Math.random is never used. After the fair shuffle the people are dealt out round-robin: the splitter walks the shuffled list and drops each person onto the next team in turn, wrapping around. That distribution mathematically guarantees balanced sizes — each team receives floor(total ÷ teams) people and the first (total mod teams) teams receive one extra, so any remainder is spread one-per-team across the smallest teams and no team is ever more than one person larger than another. You fix either the number of teams or the team size; when you fix the size, the number of teams is computed as ceil(total ÷ size).
- People shuffled by crypto.getRandomValues (CSPRNG), not Math.random
- Rejection-sampled Fisher–Yates shuffle removes modulo bias
- Round-robin distribution keeps team sizes within one of each other
- Remainder is spread one-per-team, never dumped on a single team
- All randomness runs client-side — no server round-trip
