짝을 바꿨는데 또 그 짝이 나오는 확률

짝을 한 번 지었다가 다시 바꿨는데 또 같은 짝이 나오면 「도구가 이상한 거 아니야」라는 말이 나옵니다. 정말 이상한 일일까요? 우리는 뽑고의 짝 정하기 함수를 그대로 두 번 호출해 이전과 같은 짝이 남는 비율을 세고, 같은 확률을 조합론으로 따로 계산해 맞대 보았습니다.
실험은 이렇게 했습니다
이 글의 시험은 짝 정하기를 연달아 두 번 하는 것입니다. 발표 순서·짝 정하기가 짝 모드에서 쓰는 pairUp 함수를 수정 없이 두 번 불러, 두 번 모두 같은 조가 된 두 사람이 있는지 세었습니다. 명단은 10명, 20명, 30명, 31명이고 조합마다 1,000,000번 반복했습니다. 실행 환경은 Node.js v23.10.0, 2026년 10월 14일입니다.
여기서 「같은 짝」은 첫 번째와 두 번째 모두 같은 조에 있었던 서로 다른 두 사람을 뜻합니다. 인원이 홀수이면 마지막 조에 한 명이 더 들어가 세 명 조가 되므로, 31명이라면 14쌍과 세 명 조 하나로 나뉩니다. 세 명 조는 그 안의 세 쌍이 모두 같은 조인 것으로 셉니다.
이론: 평균과 확률을 어떻게 계산하나
평균부터 보겠습니다. 인원이 짝수 n명이면 첫 번째에서 짝이 n/2쌍 생깁니다. 이 가운데 한 쌍의 한 사람을 정하면, 두 번째에서 그 사람의 짝은 나머지 n−1명 중 한 명이 같은 확률로 되므로 이전 짝이 그대로일 확률은 1/(n−1)입니다. 따라서 겹치는 짝 수의 평균은 (n/2) × 1/(n−1) = n ÷ 2(n−1)입니다. [계산] 20명이면 20÷38 = 0.526, 10명이면 10÷18 = 0.556입니다. 홀수일 때는 한 번에 같은 조인 쌍의 수를 c라고 하면 평균이 c² ÷ [n(n−1)/2]이고, 31명은 c가 14+3 = 17이라 289÷465 = 0.622입니다. [계산]
「한 쌍이라도 겹칠 확률」은 포함–배제로 구합니다. 짝수일 때 첫 번째의 짝 중 특정한 j쌍이 두 번째에도 짝일 확률은 (n−2j−1)!!÷(n−1)!!이라서, 이를 부호를 바꿔 더해 가면 겹치는 짝이 하나도 없을 확률이 나옵니다. 홀수일 때는 세 명 조가 끼어 경우가 늘어나지만 같은 방식으로 셀 수 있습니다. 식이 맞는지는 작은 인원에서 모든 순열을 일일이 세어 확인했습니다. 4명부터 9명까지, 9명이면 362,880가지 순서를 전부 만들어 이전 짝과 겹치는지 센 결과가 식과 소수점 다섯째 자리까지 같았습니다. 5명이 0%인 것은 짝 한 쌍과 세 명 조로 나누는 어떤 새 구성이든 이전과 같은 조인 쌍이 적어도 하나는 생기기 때문입니다.
| 인원 | 순서의 수 | 겹침 없음 비율 (전수 조사) | 겹침 없음 비율 (식) | 겹친 짝 평균 (전수 조사) | 겹친 짝 평균 (식) |
|---|---|---|---|---|---|
| 4명 | 24 | 66.667% | 66.667% | 0.6667 | 0.6667 |
| 5명 | 120 | 0.000% | 0.000% | 1.6000 | 1.6000 |
| 6명 | 720 | 53.333% | 53.333% | 0.6000 | 0.6000 |
| 7명 | 5,040 | 22.857% | 22.857% | 1.1905 | 1.1905 |
| 8명 | 40,320 | 57.143% | 57.143% | 0.5714 | 0.5714 |
| 9명 | 362,880 | 32.381% | 32.381% | 1.0000 | 1.0000 |
결과: 열 번에 네 번꼴로 이전 짝이 또 나온다
아래 표가 핵심입니다. 20명이 짝 정하기를 연속으로 두 번 했을 때 이전과 같은 짝이 하나라도 남은 경우는 40.91%였고 이론값은 40.88%입니다. 10명은 42.46%(이론 42.43%), 30명은 40.40%(이론 40.37%), 31명은 46.60%(이론 46.59%)였습니다. 평균 겹친 짝 수는 20명에서 0.526쌍(이론 0.526쌍)이었습니다. [실측]
실측과 이론의 차이를 이항 표준오차(0.049%p 안팎)로 나눈 값은 네 조합 모두 1 이하였고 가장 큰 것이 0.75배였습니다. 우연이 만드는 흔들림 안에서 이론과 맞는다는 뜻입니다. 즉 pairUp은 연속된 두 번의 짝 정하기에서 이론이 예측하는 만큼만 이전 짝과 겹치고, 그보다 더 자주 또는 덜 자주 겹치게 만드는 장치는 없습니다.
| 인원 | 구성 | 하나 이상 겹침 [계산] | 하나 이상 겹침 [실측] | 평균 겹친 짝 [계산] | 평균 겹친 짝 [실측] |
|---|---|---|---|---|---|
| 10명 | 짝 5쌍 | 42.43% | 42.46% | 0.556 | 0.556 |
| 20명 | 짝 10쌍 | 40.88% | 40.91% | 0.526 | 0.526 |
| 30명 | 짝 15쌍 | 40.37% | 40.40% | 0.517 | 0.518 |
| 31명 | 짝 14쌍 + 세 명 한 조 | 46.59% | 46.60% | 0.622 | 0.621 |
겹친 짝이 몇 쌍인지의 분포
겹침이 아예 없는 경우가 가장 많고 한 쌍이 겹치는 경우가 그다음이며, 세 쌍 이상 겹치는 경우는 드뭅니다. 20명이면 겹침이 없을 확률이 59.1%, 정확히 한 쌍이 31.0%, 두 쌍이 8.2%입니다. [계산] 실측도 같은 순서로 나왔습니다. 홀수 인원의 분포에는 식을 따로 세우지 않았으므로 아래 표에는 짝수 인원만 실었습니다.
극단적인 경우도 이론과 맞았습니다. 10명이 짝 정하기를 두 번 했을 때 다섯 쌍이 전부 이전과 같을 확률은 945분의 1, 약 0.106%이고 100만 번 중 실제로 0.103%가 그랬습니다. [계산] [실측] 짝이 모두 그대로인 이 경우는 사람이 보기에 도구가 고장 난 것 같겠지만, 열 명이면 천 번에 한 번쯤은 정상적으로 일어납니다.
| 겹친 짝 수 | 10명 [계산] | 10명 [실측] | 20명 [계산] | 20명 [실측] | 30명 [계산] | 30명 [실측] |
|---|---|---|---|---|---|---|
| 0쌍 | 57.57% | 57.54% | 59.12% | 59.09% | 59.63% | 59.60% |
| 1쌍 | 31.75% | 31.75% | 31.03% | 31.09% | 30.81% | 30.85% |
| 2쌍 | 8.47% | 8.47% | 8.18% | 8.15% | 7.98% | 7.96% |
| 3쌍 | 2.12% | 2.14% | 1.45% | 1.45% | 1.38% | 1.39% |
| 4쌍 이상 | 0.11% | 0.10% | 0.22% | 0.22% | 0.20% | 0.20% |
인원이 늘어도 비율이 거의 줄지 않는 까닭
30명이면 한 사람이 이전 짝을 다시 만날 확률은 29분의 1, 약 3.4%에 불과합니다. 그런데도 어딘가에서 한 쌍은 겹칠 확률이 40% 안팎이 되는 이유는, 인원이 늘면 짝의 수도 함께 늘기 때문입니다. 짝 하나가 다시 만날 확률은 (n−1)분의 1로 줄지만 짝의 수는 n/2로 늘어 평균은 n÷2(n−1), 즉 인원과 상관없이 약 0.5에 수렴합니다. 10명 0.556, 20명 0.526, 30명 0.517로 거의 변하지 않는 것을 볼 수 있습니다. [계산]
홀수 인원은 짝수보다 확률이 높게 나오는데, 세 명 조 때문입니다. 31명의 46.6%는 30명의 40.4%보다 높은데, 세 명 조 안에는 세 쌍이 들어 있어 한 번에 같은 조가 되는 쌍이 15쌍이 아니라 14+3 = 17쌍이 되고 겹칠 기회가 그만큼 늘어나기 때문입니다. [계산] 겹침을 줄이고 싶다면 한 명을 빼서 인원을 짝수로 맞추는 쪽이 낫습니다.
그래서 인원을 늘린다고 「이번엔 겹치지 않겠지」라고 기대하기는 어렵습니다. 두 번째 짝 정하기에서 이전 짝이 또 나왔다는 이야기는 열 번에 네 번꼴로 일어나는 평범한 일입니다.
겹치지 않게 하려면 몇 번을 다시 뽑아야 할까
이전 짝과 한 쌍도 겹치지 않을 때까지 다시 뽑는 규칙을 정했다면, 평균 몇 번을 뽑게 될까요. 겹치지 않을 확률이 P이면 뽑는 횟수의 평균은 1÷P입니다. [계산] 같은 시험을 20만 번 반복해 보니 아래 표와 같았습니다. 20명이면 처음 뽑은 한 번을 포함해 평균 두 번이 채 안 됩니다. 즉 「이전과 같은 짝이 나오면 한 번 다시 뽑는다」는 규칙은 대부분의 경우 한 번 더 뽑는 것으로 끝납니다.
다만 이 규칙은 사람이 지켜야 합니다. 뽑고는 이전 결과를 기억하지 않으므로 지난번 짝을 복사해 보관해 두고, 새 결과가 나오면 직접 대조해야 합니다. 이 규칙을 쓰면 결과가 더 이상 순수한 무작위가 아니라는 점도 알려야 합니다. 이전과 겹치는 결과를 빼고 뽑는 것이니까요. 모두가 알고 합의했다면 공정한 규칙입니다.
| 인원 | 이론 [계산] | 실측 [실측] (20만 번) |
|---|---|---|
| 10명 | 1.737번 | 1.739번 |
| 20명 | 1.691번 | 1.689번 |
| 30명 | 1.677번 | 1.680번 |
| 31명 | 1.872번 | 1.874번 |
모두와 한 번씩 짝이 되게 하고 싶다면
짝을 연속해서 바꾸며 모두와 한 번씩 짝이 되는 것이 목표라면 무작위 추첨은 어울리지 않습니다. 짝수 인원이 n명이면 n−1번의 라운드에 모든 사람이 서로 정확히 한 번씩 짝이 되도록 짤 수 있습니다. 리그전 대진표를 만드는 원형 방식(circle method)이 그것입니다. 한 사람을 고정하고 나머지를 한 칸씩 돌려 가며 짝을 짓는 식입니다. 이 방식으로 짠 표를 사람이 미리 준비해 두면 됩니다. 뽑고는 이런 표를 만들어 주지 않습니다. 이 글의 도구는 매번 독립적으로 짝을 뽑는 일만 합니다.
이 실험의 한계
명단 크기는 네 가지만 시험했고 연속 두 번의 비교만 다뤘습니다. 세 번 이상 이어서 짝을 바꾸면 이전 모든 짝과 겹치는지 따로 계산해야 합니다. 또 홀수 인원의 세 명 조는 한 조에 세 쌍이 들어 있어 한 번의 겹침이 여러 쌍으로 세어질 수 있는데, 이 점을 반영해 평균과 확률을 계산했지만 홀수 인원의 분포는 식을 세우지 않았습니다. 이론식은 작은 인원에서 전수 조사로 확인했고, 큰 인원에서는 실측과의 일치로 확인했습니다.
참고한 자료
- 리그전 대진 짜기 (Wikipedia, Round-robin tournament)
- 포함–배제의 원리 (Wikipedia)
- 완전 매칭 (Wikipedia, Perfect matching)
- 실험 결과 파일 (JSON)
바로 써 보기
- 발표 순서·짝 정하기 — 누가 먼저? 누구랑?
- 사다리타기 — 선을 따라 만나는 뜻밖의 결과