어떻게 나누나요?
입력한 명단을 피셔-예이츠(Fisher–Yates) 셔플로 섞은 뒤, 섞인 순서대로 팀 1, 2, …, k에 한 명씩 돌아가며 나눠줍니다(카드 돌리기 방식). 마지막으로 팀 번호 자체도 한 번 더 섞습니다. 나머지 인원이 항상 앞 번호 팀에만 더해지면 "1팀이 늘 한 명 많은" 쏠림이 생기므로, 팀 번호를 섞어 어느 팀이 한 명 더 받을지도 무작위가 되도록 합니다. 난수는 브라우저의 crypto.getRandomValues와 모듈로 편향이 없는 거절 샘플링으로 만들며, 같은 원리는 비밀번호 생성기,UUID 생성기, 랜덤 숫자 생성기와 동일합니다.
인원이 나누어떨어지지 않을 때의 규칙
n명을 k팀으로 나눌 때 q = ⌊n/k⌋, r = n mod k라 하면 r개 팀은 q+1명, 나머지 (k−r)개 팀은 q명입니다. 팀 간 인원 차이는 최대 1명이며, 이보다 더 균등하게 나누는 방법은 없습니다. 누가 "한 명 더 많은 팀"이 될지는 무작위로 결정됩니다. "팀당 인원" 기준을 고르면 팀 수를 ⌈n/팀당 인원⌉으로 계산한 다음 같은 규칙으로 나누므로, 예를 들어 11명을 팀당 4명으로 하면 팀 수는 3개가 되고 인원은 4·4·3이 됩니다. 마지막 팀만 3명이 되고 나머지 팀이 4명으로 가득 차는 식(4·4·3 순서 고정)이 아니라, 어느 팀이 3명이 될지도 무작위입니다.
| 인원 n | 팀 수 k | 인원 구성 | 특정 두 사람이 같은 팀일 확률 | (참고) 1/k |
|---|---|---|---|---|
| 10명 | 2팀 | 5명 × 2팀 | 44.44% | 50.00% |
| 10명 | 3팀 | 4명 × 1팀 + 3명 × 2팀 | 26.67% | 33.33% |
| 7명 | 3팀 | 3명 × 1팀 + 2명 × 2팀 | 23.81% | 33.33% |
| 17명 | 3팀 | 6명 × 2팀 + 5명 × 1팀 | 29.41% | 33.33% |
| 23명 | 4팀 | 6명 × 3팀 + 5명 × 1팀 | 21.74% | 25.00% |
| 25명 | 5팀 | 5명 × 5팀 | 16.67% | 20.00% |
| 30명 | 4팀 | 8명 × 2팀 + 7명 × 2팀 | 22.53% | 25.00% |
| 100명 | 7팀 | 15명 × 2팀 + 14명 × 5팀 | 13.43% | 14.29% |
표의 확률은 (각 팀 인원 s에 대한 s(s−1)의 합) ÷ n(n−1)로 계산했습니다. 팀 크기가 고정이므로 "두 사람이 따로 독립적으로 팀을 고르는" 1/k보다 약간 낮습니다. 한 사람이 자리를 차지하면 그 팀에 남은 자리가 줄어들기 때문입니다.
검산된 예시
예시 1. 23명을 4팀으로. q = 5, r = 3이므로 6명 팀 3개와 5명 팀 1개(6+6+6+5 = 23)입니다. 특정 두 사람이 같은 팀이 될 확률은 (3×6×5 + 1×5×4) ÷ (23×22) = 110/506 = 21.74%입니다.
예시 2. 10명을 3팀으로. q = 3, r = 1이므로 4명 팀 1개와 3명 팀 2개(4+3+3 = 10)입니다. 같은 팀일 확률은 (1×4×3 + 2×3×2) ÷ (10×9) = 24/90 = 26.67%입니다. 가능한 분배 방법의 수는 6명을 3팀(팀 번호 구분, 2명씩)으로 나누는 6!/(2!2!2!) = 90가지처럼 다항계수로 계산되며, 10명 3팀은 4,200가지입니다. 이 모든 분배가 같은 확률로 나오는 것이 공정한 팀 나누기의 정의입니다.
그룹 균형 모드는 어떻게 작동하나요?
완전 무작위로 나누면 우연히 한 팀에 실력자나 특정 성별·학년이 몰릴 수 있습니다. 그룹 균형을 체크하고 "이름, 그룹" 형식(예: 홍길동, 상)으로 입력하면 그룹별로 따로 섞은 뒤 같은 카드 돌리기 줄을 이어서 돌립니다. 그 결과 각 그룹의 팀별 인원 차이도 최대 1명이고, 전체 팀 인원 차이도 최대 1명입니다. 예를 들어 상 4명·중 4명·하 4명을 4팀으로 나누면 각 팀은 정확히 상·중·하 한 명씩 3명이 됩니다. 쉼표가 없는 줄은 그룹 없음으로 처리합니다. 한 번에 보장되는 것은 "그룹 분산"이며, 그룹을 나누는 기준(실력 평가 등)이 정확한지는 운영자가 책임져야 합니다.
왜 "각자 팀을 무작위로 고르게" 하지 않나요?
구현이 쉬운 대안은 사람마다 1~k 중 하나를 무작위로 골라 배정하는 방식입니다. 하지만 이 방식은 인원이 균등하게 나오지 않습니다. 10명을 2팀으로 독립 배정하면 5:5가 나올 확률은 C(10,5)/210 = 252/1024, 약 24.6%뿐이고 나머지는 6:4, 7:3처럼 치우칩니다. 그래서 이 도구는 먼저 팀 크기(q 또는 q+1)를 고정한 뒤 사람을 그 자리에 무작위로 채워 넣는 "셔플 후 카드 돌리기" 방식을 씁니다. 또 한 줄짜리 정렬 셔플 (sort(() => Math.random() - 0.5))도 쓰지 않습니다. 원소 3개를 이 방식으로 60만 번 섞어 보면 어떤 순서는 약 37.5%, 어떤 순서는 약 6.2%로 크게 쏠렸고(균등이면 모두 16.7%), 피셔-예이츠는 모든 순서가 16.6~16.7%였습니다. 팀 나누기에서 그런 쏠림은 "항상 같은 사람끼리 같은 팀이 되는" 문제로 이어집니다.
팀 수와 인원은 어떻게 정하면 좋을까요?
먼저 활동에서 "한 팀이 최소 몇 명이어야 굴러가는가"를 기준으로 삼으세요. 토론이나 조별 과제는 인원이 늘수록 무임승차가 생기기 쉬워 소규모가 다루기 쉽고, 구기 종목은 경기 규칙이 정한 출전 인원이 있으므로 교체 선수를 포함해 팀당 인원을 계산해야 합니다. 팀 수가 홀수이고 대진이 필요하면 토너먼트에서 부전승이 생길 수 있으니대진표 생성기로 확인하세요. 인원이 남는다면 "한 명 더 많은 팀"을 그대로 두는 것이 가장 균등하고, 인원이 정확히 맞아야 하는 활동이면 결석 여부를 먼저 확정한 뒤 명단을 넣으세요. 중간에 한 명이 빠지면 전체를 다시 섞기보다 인원이 많은 팀에서 한 명을 다시 추첨(예: 랜덤 추첨기)해 옮기는 편이 나머지 팀 구성을 유지합니다.
흔한 실수
- 팀 개수에 참가자 수보다 큰 숫자를 넣는 경우: 빈 팀이 생기므로 막습니다. 참가자 수 이하로 입력하세요.
- "팀당 인원"과 "팀 개수"를 혼동하는 경우: 20명을 "팀당 4명"으로 하면 5팀, "팀 4개"로 하면 5명씩 4팀입니다.
- 그룹 균형 모드에서 쉼표 뒤 그룹명을 오타로 다르게 적는 경우: "상"과 "상 "은 공백 제거 후 같지만 "상"과 "상급"은 다른 그룹입니다.
- 이름 안에 쉼표가 있는 경우(예: 영문 "Kim, Jun"): 그룹 균형을 켜면 쉼표 뒤가 그룹으로 읽히므로 이름 표기를 바꾸세요.
공정성의 한계와 현실적 조언
- 무작위가 곧 균형은 아닙니다. 공정한 절차(모두 같은 확률)와 공정한 결과(팀 전력이 비슷)는 다릅니다. 실력 차가 큰 경기라면 그룹 균형 모드를 쓰거나, 먼저 상·중·하로 나눈 뒤 각 그룹에서 뽑으세요.
- 마음에 안 든다고 다시 돌리면 무작위가 아닙니다. 결과를 본 뒤 재시도하면 그 선택이 결과를 편향시킵니다. 횟수를 미리 정하고 확정한 팀은 "결과 복사"로 바로 기록하세요.
- 같이 있으면 안 되는/꼭 같이 있어야 하는 조건은 지원하지 않습니다. 필요하면 결과를 본 뒤 규칙을 공개적으로 합의해 교환하되, 이는 더 이상 무작위가 아님을 인정하세요.
- 동명이인은 서로 다른 사람으로 취급합니다. 화면 상단에 중복 이름 안내가 나오니 "김민준 A/B"처럼 구분하세요.
- 이번 결과가 우연히 치우쳐 보여도 표본이 작으면 정상입니다. 8명을 2팀으로 나눌 때 특정 두 사람이 같은 팀일 확률은 3/7(약 42.9%)이지, 반드시 갈라지는 것이 아닙니다.
유의사항과 활용
입력한 명단은 브라우저 안에서만 처리되며 서버로 전송되거나 저장되지 않습니다. 시드를 지정할 수 없어 같은 명단이라도 누를 때마다 결과가 달라지고, 재현할 수 없습니다. 발표 순서나 당첨자 한두 명을 뽑는다면랜덤 추첨기가, 팀 간 대진이 필요하면토너먼트 대진표 생성기가, 게임처럼 결과를 배정하려면사다리타기가 맞습니다. 팀 모임 진행에 필요한 도구는팀 워밍업 질문 생성기에서 이어서 이용하세요.
자주 묻는 질문
같은 명단으로 다시 나누면 결과가 달라지나요?
네, "팀 나누기"를 누를 때마다 매번 새로 섞어 편성하므로 같은 명단이라도 결과가 달라집니다. 마음에 드는 결과가 나올 때까지 반복하면 공정성이 사라지므로 한 번만 하고 확정하기를 권합니다.
빈 줄이나 중복된 이름은 어떻게 처리되나요?
빈 줄은 무시합니다. 중복된 이름은 서로 다른 사람으로 간주해 각각 팀에 배정하며, 입력창 아래에 중복 이름이 몇 개인지 알려줍니다.
인원이 팀 수로 나누어떨어지지 않으면 어떻게 되나요?
팀 인원 차이가 최대 1명이 되도록 나눕니다. 23명 4팀이면 6·6·6·5명입니다. 어느 팀이 한 명 더 많을지도 무작위입니다.
실력이 비슷하게 팀을 나눌 수 있나요?
"그룹 균형"을 체크하고 각 줄에 "이름, 상/중/하" 같은 등급을 적으면 등급이 팀마다 고르게 분산됩니다. 등급 자체는 직접 정해야 합니다.
팀 개수는 몇 개까지 나눌 수 있나요?
2팀 이상, 참가자 수 이하까지 가능합니다(최대 100팀). 팀당 인원 기준에서는 팀 수가 자동 계산되며, 팀이 2개 미만이 되면 안내가 나옵니다.
결과를 다른 곳에 붙여 넣을 수 있나요?
"결과 복사"를 누르면 팀별로 정리된 텍스트가 복사되어 메신저나 문서에 바로 붙여 넣을 수 있습니다.