One pairing is easy. The second one is the problem.
Shuffling a list and pairing off adjacent names takes one line of code and is perfectly fair.
Then you do it again the following week, and again the week after, and eventually two people get each other for the third time and somebody says the thing must be broken.
It is not broken. It has no memory. Each draw is independent and knows nothing about the last one, and independent draws repeat far more often than intuition suggests. That is the same instinct that makes people distrust a coin that lands heads six times running.
Rotating beats redrawing
The fix is not to keep reshuffling until the result looks sufficiently spread out. It is to stop reshuffling.
Fix one person in place. Stand everybody else in a circle. Pair across the circle, then rotate everyone by one position and pair again. It is the same hundred-year-old trick that builds a league fixture list, and it works here for the same reason.
Round one gives a pairing. Round two gives a completely different one. Nobody can be paired with the same person twice until the entire set has been used.
The guarantee, and why it is the maximum
With eight people you get seven rounds with no repeats. That is not a coincidence: each person only has seven other people available, and they can only be paired with one per round.
So seven is the ceiling for any method at all, and this hits it. Nothing could do better, which is a more useful thing to know than a promise that repeats are "unlikely".
An odd number gives one more round than you might expect, because the rotation runs on an extra position to handle the spare.
Nobody sits out
With an odd number, most tools leave somebody out each round.
That is fine for a fixture list, where a bye is a rest. It is wrong for coffee chats, practice partners or introductions, where the entire point is that everybody takes part. So the spare joins a pair to make a three, and because the circle rotates it is a different person each time.
Publish it in advance
Because the seed fixes the whole cycle, every future round is already decided. You can print the lot today.
That is worth doing. A rota published up front cannot be accused of having been rearranged after somebody complained about who they were paired with, and that accusation is the main reason these things quietly stop happening.
Common questions
Why do the same two people keep getting paired?
Because shuffling from scratch each week has no memory. Random does not spread itself out, and a fresh draw every time throws up a repeat far sooner than anybody expects. It is not a fault in the shuffle, it is what independent draws do. The fix is to stop redrawing and start rotating.
How many rounds can I get without a repeat?
One fewer than the number of people, if that number is even. Eight people gives seven rounds. That is also the maximum possible for anybody: each person only has seven others to be paired with, so nothing could do better. An odd number gives as many rounds as there are people.
Is it avoiding repeats, or guaranteeing it?
Guaranteeing. The pairs come from the circle method, the same hundred-year-old trick that builds a league fixture list: fix one person, rotate everybody else, pair across the circle. A repeat is not unlikely, it is impossible until the whole set is used up, and the page tells you exactly when that is.
What happens with an odd number of people?
One group becomes a three rather than somebody sitting out. Leaving a person out is the usual answer and it is the wrong one when the whole point is that everybody takes part. The spare joins a pair, and it is a different person every round.
Should I reshuffle each week?
No. Reshuffling is what causes the repeats, counterintuitive as that sounds. Shuffle once to decide who starts where, then step through the rounds. The seed fixes the entire cycle, so every future round is already determined.
Can I publish the rota in advance?
Yes, and it is usually the right thing to do. Show all the rounds and you have the full rota, fixed by the seed. Publishing it up front stops anybody thinking the pairings were rearranged after somebody complained about who they got.
What is this useful for?
Anything where the same people need pairing up repeatedly: coffee roulette or random introductions at work, practice partners, revision buddies, mentoring, doubles, sparring, or a rota for who checks whose work. Anywhere the complaint is that it keeps landing on the same two.