How to Split a List into Random Groups
This workflow has two inputs: a list with one item per line and a count between 2 and 20 groups. Generate once to shuffle the list and distribute its items round-robin. The resulting group sizes differ by at most 1.
- —Input is line-based; blank lines are ignored.
- —You choose the number of groups, not another grouping constraint.
- —The panel does not evaluate skills, roles, relationships, or item attributes.
- —You can copy one group or copy all groups with fixed group headers.
Step 1: prepare the list
Put every person or item on a separate line. The parser trims surrounding whitespace and ignores empty lines. Repeated lines remain separate entries, so remove accidental duplicates before generating if each item should appear once.
Step 2: choose the group count
Select a count from 2 through 20. It must not exceed the number of parsed items. For example, 24 items with a count of 6 produces six groups containing four items each. With 17 items and a count of 5, the output capacities are 4, 4, 3, 3, and 3.
Step 3: generate the shuffled order
The panel runs a Fisher-Yates shuffle. For each index, it reads a Uint32 value from Web Crypto getRandomValues. Rejection sampling removes the part of the Uint32 range that would create modulo bias before the value is mapped to the needed index range. Under that mechanism, each permutation is equally likely.
Step 4: understand the round-robin assignment
After the shuffle, round-robin sends the first item to Group 1, the next to Group 2, and so on, returning to Group 1 after the last requested group. This makes any two group sizes differ by at most 1.
Equal permutation probability does not mean that an item always has the same probability of entering every group. If all group capacities are equal, those group probabilities are equal. With different capacities, different capacities produce different probabilities: a group holding c of n output positions receives a particular item with probability c/n.
Step 5: copy the result
Use the copy button on one group when you need only that list. Use Copy All when you need the complete output; it includes the fixed Group 1, Group 2, and subsequent headers shown in the panel.
What the result does not account for
The generator sees only text lines and a group count. It does not know who works well together, which roles are needed, or any item attributes. If those constraints matter, review the output against them before using it.
Enter each member name on a new line
Press Cmd/Ctrl + Enter ↵
Frequently asked questions
What does this group generator ask me to choose?
Enter one item per line and choose between 2 and 20 groups. The group count cannot exceed the number of non-empty input lines.
How does the shuffle choose an index?
The Fisher-Yates shuffle gets Uint32 values from Web Crypto getRandomValues. Rejection sampling discards values from the uneven tail before mapping a draw to the required index range.
What probability does the algorithm make uniform?
Each permutation is equally likely. Each item is therefore equally likely to occupy any particular output position.
Does each item have the same probability of entering every group?
Only when every group has the same capacity. When the item count is not divisible by the group count, different capacities produce different probabilities: a group containing c of n output positions receives an item with probability c/n.
How close are the group sizes?
After shuffling, round-robin assignment makes the sizes of any two groups differ by at most 1.