랜덤 팀 배정 원리
입력한 이름은 먼저 줄바꿈 또는 쉼표를 기준으로 분리하고 앞뒤 공백을 제거합니다. 빈 줄은 제외하며 같은 이름이 두 번 있으면 누구인지 구분할 수 없으므로 오류로 안내합니다. 유효한 참가자 목록은 브라우저에서 피셔–예이츠 방식으로 뒤에서부터 하나씩 위치를 바꾸어 섞습니다. 각 위치를 바꿀 때 JavaScript의 난수로 현재 범위 안의 인덱스를 선택합니다.
섞인 이름은 1팀부터 마지막 팀까지 한 명씩 차례로 넣고 다시 1팀으로 돌아오는 순환 배치 방식으로 나눕니다. 참가자 수가 팀 수로 나누어떨어지지 않아도 앞쪽 팀부터 한 명씩 더 배정되기 때문에 팀별 인원 차이는 최대 한 명입니다. 예를 들어 10명을 3팀으로 나누면 4명, 3명, 3명이 되고 어떤 사람이 어느 팀에 들어가는지는 섞인 순서에 따라 달라집니다.
이 배정은 참가자의 실력, 연령, 성별, 직무와 역할을 전혀 사용하지 않는 단순 무작위 방식입니다. 스포츠 경기처럼 전력 균형이 중요한 경우에는 주장, 골키퍼 또는 숙련자를 먼저 그룹으로 나눈 다음 각 그룹에서 따로 배정하거나 결과를 확인해 수동으로 조정하세요. 무작위 결과가 특정 팀에 우연히 유리하게 보일 수 있다는 점도 자연스러운 난수의 특성입니다.
JavaScript의 일반 난수는 행사와 게임용 팀 나누기에는 적합하지만 추첨 당첨자 선정, 금전이나 법적 권리가 걸린 절차를 검증하는 암호학적 난수는 아닙니다. 참가자 이름은 서버나 localStorage에 저장하지 않으며 공유 URL에도 포함하지 않습니다. 결과가 필요하면 팀 결과 복사 버튼으로 텍스트를 보관하세요. 다시 배정하면 이전 결과는 복구되지 않고 새 순서가 만들어집니다.
구체적인 상황으로 이해하는 활용 예시
다음 세 상황은 도구의 처리 과정과 결과 해석을 설명하기 위한 가상 예시입니다. 입력 조건을 바꾸면 결과도 달라지므로 자신의 조건과 비교해 확인하세요.
1. 10명을 3팀으로 나누는 경우
서로 다른 이름 10개와 팀 수 3을 입력하면 이름 순서를 섞은 뒤 팀마다 한 명씩 돌아가며 넣습니다. 10 ÷ 3의 몫은 3, 나머지는 1이므로 팀 인원은 4명·3명·3명이 됩니다. 어느 이름이 들어갈지는 매번 달라지며 인원 균형만 맞출 뿐 실력이나 역할의 균형을 보장하지 않습니다.
2. 12명을 4팀으로 배정
이름 12개를 4팀에 배분하면 나머지가 없어 각 팀에 3명씩 들어갑니다. 다시 배정하면 구성원이 달라질 수 있지만 우연히 같은 조합이 나와도 오류는 아닙니다. 같은 이름 두 명이 있다면 민수A·민수B처럼 구분해야 중복 검사에 걸리지 않고 모든 참가자를 따로 배정할 수 있습니다.
3. 7명을 2팀으로 나누는 경우
7명의 이름과 팀 수 2를 입력하면 4명·3명으로 나뉩니다. 홀수 인원이라 정확히 같은 크기로 만들 수 없어서 차이를 1명으로 제한하는 방식입니다. 진행자 1명을 빼고 3명씩 구성하려면 처음부터 진행자를 명단에서 제외해야 하며 도구가 진행 역할이나 참가 의사를 자동 판단하지 않습니다.