조 편성 6번 해도 서로 다 만나지 못한다

조 편성을 몇 번 하다 보면 결국 모두가 모두와 한 번쯤은 같은 조가 될 것 같습니다. 정말 그럴까요? 우리는 뽑고의 팀 나누기 함수를 그대로 호출해 같은 명단을 여러 번 조 편성하면서, 한 번도 같은 조가 되지 못한 쌍이 몇 쌍 남는지를 세었습니다. 이론값은 조합론으로 따로 계산해 맞대 보았고, 어긋나는 부분은 원인까지 적었습니다.
실험은 이렇게 했습니다
같은 명단을 되풀이해서 조 편성하는 상황을 만들었습니다. 명단은 20명, 23명, 30명이고 팀 수는 4팀·5팀·6팀 가운데 6가지 조합을 골랐습니다. 조를 나누는 데는 뽑고의 랜덤 팀 나누기가 쓰는 splitTeams 함수를 그대로 호출했습니다. 한 번의 조 편성에서 두 사람이 같은 팀이 되는 비율은 조합마다 30만 번, 같은 반을 최대 8번까지 반복해서 나누는 시험은 10만 개 반을 만들어 돌렸습니다. 실행 환경은 Node.js v23.10.0, 2026년 10월 14일입니다.
비교할 이론값은 조합론으로 따로 계산했습니다. 서로 다른 두 사람 가운데 첫 사람이 크기 s인 팀에 있을 확률은 s/n이고, 그 팀의 나머지 s−1자리 중 하나에 둘째 사람이 있을 확률은 (s−1)/(n−1)입니다. 팀 크기가 모두 같지 않을 수 있으니 팀마다 더하면, 두 사람이 같은 팀일 확률은 p = Σ s(s−1) ÷ n(n−1)입니다. 서른 명을 다섯 팀으로 나누면 6명짜리 5팀이라 p = 5×30÷870 = 17.24%입니다. [계산]
서로 다른 조 편성은 앞의 결과를 모르고 따로 뽑으므로 독립입니다. 그래서 한 쌍이 k번 나눠도 한 번도 같은 팀이 되지 못할 확률은 (1−p)의 k제곱이고, 못 만난 쌍 수의 평균은 전체 쌍 수 n(n−1)/2에 이 값을 곱하면 됩니다. 쌍들끼리 서로 영향을 주더라도 평균은 이 곱셈으로 정확히 나옵니다. [계산]
한 번의 조 편성: 두 사람이 같은 팀일 확률
먼저 한 번 나눌 때의 확률이 이론과 맞는지 보았습니다. 같은 인원이라도 팀 수가 많을수록 확률이 내려갑니다(30명이면 4팀 22.5%, 5팀 17.2%). 팀 수가 같으면 인원이 많을수록 1/팀 수(4팀이면 25%)에 가까워져서, 4팀일 때 20명은 21.1%, 23명(6명 3팀과 5명 1팀)은 21.7%, 30명은 22.5%입니다. 30만 번 나눈 뒤 명단의 첫째와 둘째가 같은 팀이었던 비율은 20명 4팀에서 21.07%, 30명 5팀에서 17.27%로 이론과 표준오차(0.07%p 안팎) 이내로 맞았습니다. [실측]
여기서 하나 짚어 둘 것이 있습니다. 모든 쌍의 같은 팀 비율을 평균하면 한 번 나눌 때 같은 팀이 되는 쌍의 수가 늘 같기 때문에 이론값과 정확히 일치할 수밖에 없습니다. 그 일치는 시험이 되지 못하므로 표에 싣지 않았습니다. 시험이 되는 것은 쌍 하나하나입니다. 쌍이 수백 개이면 그중 몇 개는 우연히 이론에서 꽤 벗어나 보이는데, 쌍마다 이론과의 차이를 표준오차로 나눈 값의 최댓값은 가장 큰 조합에서도 3.20배였습니다. 쌍이 400개 남짓이면 표준오차의 3배 안팎까지 벗어나는 쌍이 하나쯤 나오는 것이 정상이므로, 어느 쌍이 특별히 자주 또는 드물게 묶이는 일은 없었다고 읽을 수 있습니다. [실측]
| 인원 · 팀 수 | 팀 크기 | 이론 [계산] | 특정 두 사람 [실측] | 쌍마다의 범위 [실측] | 이론에서 가장 벗어난 쌍 [실측] |
|---|---|---|---|---|---|
| 20명 · 4팀 | 5명 4팀 | 21.05% | 21.07% | 20.88% ~ 21.27% | 표준오차의 2.9배 |
| 20명 · 5팀 | 4명 5팀 | 15.79% | 15.77% | 15.62% ~ 15.96% | 표준오차의 2.6배 |
| 30명 · 4팀 | 8명 2팀 · 7명 2팀 | 22.53% | 22.47% | 22.29% ~ 22.72% | 표준오차의 3.2배 |
| 30명 · 5팀 | 6명 5팀 | 17.24% | 17.27% | 17.05% ~ 17.45% | 표준오차의 3.1배 |
| 30명 · 6팀 | 5명 6팀 | 13.79% | 13.65% | 13.61% ~ 13.98% | 표준오차의 3.0배 |
| 23명 · 4팀 | 6명 3팀 · 5명 1팀 | 21.74% | 21.60% | 21.55% ~ 21.91% | 표준오차의 2.6배 |
같은 반을 여러 번 나누면
이제 같은 명단을 여러 번 나눠 봅니다. 서른 명을 다섯 팀으로 나누는 반에서 한 번 나눈 뒤 한 번도 같은 팀이 되지 못한 쌍은 360쌍으로, 전체 435쌍의 82.8%입니다. 여섯 번 나누고 나서도 평균 139.7쌍(32.1%)이 서로 만나지 못했고, 여덟 번 나눈 뒤에도 95.7쌍(22.0%)이 남았습니다. [실측] 이론값 139.8쌍(여섯 번), 95.7쌍(여덟 번)과 0.1쌍 이내로 맞았습니다. [계산]
스무 명 네 팀이라면 조금 빠릅니다. 여섯 번 나눈 뒤 못 만난 쌍이 평균 46.0쌍으로 전체 190쌍의 24.2%입니다. [실측] 팀 수가 적을수록 한 번에 만날 확률이 높기 때문입니다. 표의 마지막 열은 「모두가 서로 한 번씩은 만난」 반의 비율인데, 10만 개 반 가운데 여덟 번 안에 그렇게 된 반은 두 조합 모두 하나도 없었습니다. [실측]
| 조 편성 횟수 | 이론 [계산] | 실측 [실측] | 전체 쌍 중 비율 [실측] | 모두가 만난 반 [실측] |
|---|---|---|---|---|
| 1번 | 360.0쌍 | 360.0쌍 | 82.8% | 0.00% |
| 2번 | 297.9쌍 | 297.9쌍 | 68.5% | 0.00% |
| 3번 | 246.6쌍 | 246.6쌍 | 56.7% | 0.00% |
| 4번 | 204.1쌍 | 204.0쌍 | 46.9% | 0.00% |
| 5번 | 168.9쌍 | 168.8쌍 | 38.8% | 0.00% |
| 6번 | 139.8쌍 | 139.7쌍 | 32.1% | 0.00% |
| 7번 | 115.7쌍 | 115.6쌍 | 26.6% | 0.00% |
| 8번 | 95.7쌍 | 95.7쌍 | 22.0% | 0.00% |
| 조 편성 횟수 | 이론 [계산] | 실측 [실측] | 전체 쌍 중 비율 [실측] | 모두가 만난 반 [실측] |
|---|---|---|---|---|
| 1번 | 150.0쌍 | 150.0쌍 | 79.0% | 0.00% |
| 2번 | 118.4쌍 | 118.4쌍 | 62.3% | 0.00% |
| 3번 | 93.5쌍 | 93.5쌍 | 49.2% | 0.00% |
| 4번 | 73.8쌍 | 73.8쌍 | 38.9% | 0.00% |
| 5번 | 58.3쌍 | 58.3쌍 | 30.7% | 0.00% |
| 6번 | 46.0쌍 | 46.0쌍 | 24.2% | 0.00% |
| 7번 | 36.3쌍 | 36.3쌍 | 19.1% | 0.00% |
| 8번 | 28.7쌍 | 28.7쌍 | 15.1% | 0.00% |
모두가 서로 만나려면 몇 번이 필요할까
모든 쌍이 한 번씩은 같은 팀이 될 때까지 조 편성을 반복하면 몇 번이나 걸릴까요. 서른 명 다섯 팀 반에서는 평균 35.7번, 중앙값이 35번이었고 10만 개 반 가운데 10%는 28번 이하, 10%는 45번 이상이 걸렸습니다. 가장 오래 걸린 반은 95번이었습니다. 스무 명 네 팀은 평균 25.2번입니다. [실측] 한 학기에 조 편성을 몇 번 하든, 무작위로만 나눈다면 모두가 모두를 만났다고 말하기는 어렵다는 뜻입니다.
표에는 비교용 근사값도 적었습니다. 쌍들이 서로 독립이라고 가정하면 모든 쌍이 만나는 데 걸리는 횟수는 (ln 쌍 수 + 0.577) ÷ −ln(1−p) 근처로 계산됩니다. [계산] 서로 독립이 아니라는 점에서 이 근사가 틀릴 수도 있다고 예상했습니다. 가와 나가 같은 팀이고 가와 다도 같은 팀이면 나와 다는 반드시 같은 팀이어서, 한 번의 조 편성에서 쌍들은 뭉쳐서 만나기 때문입니다. 그런데 실측은 네 조합 모두에서 근사보다 일정하게 0.5번에서 0.6번 길었을 뿐이고, 근사에 0.5를 더하면 실측과 0.1번 이내로 맞았습니다. 이 0.5번은 근사가 시간을 연속으로 보는 데서 오는 차이로 읽힙니다. 조 편성은 정수 번만 하므로 마지막 쌍이 만나는 순간이 평균 반 번쯤 늦게 잡힙니다. 쌍들이 뭉쳐서 만나는 효과는 이 크기에서는 평균에 거의 영향을 주지 않았습니다. [실측]
| 인원 · 팀 수 | 한 번에 만날 확률 | 평균 [실측] | 중앙값 [실측] | 10%~90% [실측] | 가장 오래 걸린 반 [실측] | 독립 가정 근사 [계산] |
|---|---|---|---|---|---|---|
| 20명 · 4팀 | 21.1% | 25.2번 | 24번 | 19~32번 | 81번 | 24.6번 |
| 30명 · 5팀 | 17.2% | 35.7번 | 35번 | 28~45번 | 95번 | 35.2번 |
| 30명 · 6팀 | 13.8% | 45.4번 | 44번 | 36~57번 | 119번 | 44.8번 |
| 20명 · 5팀 | 15.8% | 34.4번 | 33번 | 26~44번 | 99번 | 33.9번 |
같은 쌍이 연달아 또 만나는 일
새로운 사람을 만나고 싶은데 지난번과 같은 조가 되었다는 불만도 있습니다. 서른 명 다섯 팀 반에서 첫 번째와 두 번째 조 편성 모두 같은 팀이었던 쌍은 평균 12.9쌍이었습니다. 이론은 435쌍에 p의 제곱을 곱한 12.9쌍으로, 맞습니다. [실측] 한 반에서 열세 쌍 가까이는 연속으로 같은 팀이 되는 것이 정상이라는 뜻입니다.
이것은 뽑고의 팀 나누기가 이전 결과를 기억하지 않기 때문에 생기는 현상이기도 합니다. 매번 처음부터 섞으므로 지난번에 같은 팀이었다는 사실이 이번 조 편성에 영향을 주지 않습니다. 장점은 어느 쌍도 불리하지 않다는 것이고, 단점은 이전 조를 피해 주지 않는다는 것입니다.
이 숫자를 모임에 적용하면
첫째, 무작위로 조를 몇 번 짜 놓고 모두가 서로 알게 되었다고 기대하지 마세요. 서른 명이면 여섯 번을 나누고도 세 쌍 중 한 쌍꼴(약 32%)은 같은 조가 된 적이 없습니다. 둘째, 같은 조가 연속되는 것을 조작으로 의심하지 마세요. 이 정도 중복은 이론이 예측하는 범위입니다. 셋째, 모두를 만나게 하는 것이 목적이라면 무작위 반복보다 설계된 편성이 맞습니다. 모든 사람이 서로 한 번씩 만나도록 여러 주에 걸쳐 조를 짜는 문제는 수학에서 사회 연결 문제(social golfer problem)로 연구되어 왔고, 둘씩 짝을 짓는 경우에는 모두가 서로 한 번씩 만나는 리그전 대진표를 짜는 방법이 알려져 있습니다.
뽑고의 팀 나누기에는 그런 설계 기능이 없습니다. 이전 조를 피하고 싶다면 사람이 이전 편성표를 보관해 두고, 새 조를 뽑은 뒤 지난번과 겹치는 쌍을 확인해 필요하면 한 번만 다시 나누는 규칙을 미리 정해 두세요. 다만 서른 명 다섯 팀에서는 지난번과 같은 조가 되는 쌍이 평균 13쌍이나 되므로, 겹침을 0으로 맞추는 규칙은 현실적이지 않습니다. 「지난번과 같은 조가 몇 쌍 이하」처럼 기준을 정해 두어야 합니다.
이 실험의 한계
이 실험은 모든 조 편성이 같은 인원과 같은 팀 수로 이루어지고 결석이 없다고 가정했습니다. 실제 학급에서는 사람이 빠지거나 들어오고 팀 수도 바뀝니다. 그런 경우에도 두 사람이 같은 팀이 될 확률은 같은 식으로 계산할 수 있지만, 이 글의 표를 그대로 쓸 수는 없습니다. 또 이 글은 뽑고의 함수가 쌍을 고르게 묶는지를 확인한 것이지, 팀 구성이 좋은지를 평가한 것이 아닙니다. 팀의 실력 균형이나 성격 조합은 이 도구가 다루지 않습니다.
참고한 자료
- 사회 연결 문제 (Wikipedia, Social golfer problem)
- 리그전 대진 짜기 (Wikipedia, Round-robin tournament)
- 쿠폰 수집가 문제 (Wikipedia)
- 실험 결과 파일 (JSON)
바로 써 보기
- 랜덤 팀 나누기 — 고르게 나누고, 함께 시작해요
- 발표 순서·짝 정하기 — 누가 먼저? 누구랑?