Cadmeo

Partner Picker

One per line, or comma-separated. Duplicates are removed.

0
People
0
Pairs
0
Unpaired
Pairs

Enter at least two names, then draw.

The partner picker shuffles a list of names and pairs them off. With an odd number of people it names who is left over rather than quietly dropping them, which is the failure mode that makes a pairing tool useless in a classroom.

How it works

  1. Duplicate names are removed, since two identical entries would leave one person unaccounted for.
  2. Pairing shuffles the names with Fisher-Yates, drawing each swap from the browser cryptographic random source.
  3. Names are taken two at a time from the shuffled order.
  4. With an odd count, the final name is reported separately as unpaired.

Shuffling before pairing rather than picking pairs at random is what makes every possible pairing equally likely. Repeatedly drawing two names from a pool produces the same result but takes longer to reason about.

Examples

An even group

Names

Amara, Caleb, Delphine, Finn

Result

Pair 1: Delphine and Amara · Pair 2: Finn and Caleb

Four names produce two pairs with nobody left over.

An odd group

Names

Amara, Caleb, Delphine, Finn, Grace

Result

Two pairs, and Grace reported as unpaired

The leftover is named explicitly so you can decide whether to make a three or sit them out, rather than discovering the shortfall by counting.

Frequently asked questions

What happens with an odd number of people?

The last person is named as unpaired rather than being dropped. You then decide whether to add them to a pair as a three or have them sit out. A decision the tool cannot make for you, and should not make silently.

Can I stop two particular people being paired?

No, the pairing is unconstrained. Draw again if a pairing does not work, or split the group and run it twice. Constrained matching is a genuinely harder problem, and a tool that quietly failed to honour a constraint would be worse than one that never offered it.

Is every possible pairing equally likely?

Yes. The list is shuffled with Fisher-Yates using the cryptographic random source before pairs are taken, so no arrangement is favoured. Sorting by a random comparator, which many implementations use, is measurably biased.

How is this different from the classroom group generator?

That one splits a list into any number of groups of any size and evens them out. This one always makes pairs, which is a common enough case to deserve a tool that does not need configuring.