명단을 랜덤으로 균등하게 팀 분배 · 공정한 난수(crypto) 셔플

팀 나누기는 어떤 상황에 쓰는 도구인가요

회식 자리 게임 편 가르기, 체육대회 조 편성, 수업 시간 모둠 만들기처럼 사람 목록을 무작위로 갈라야 할 때 쓰는 도구입니다. 이름을 한 줄에 하나씩 적고 몇 팀으로 나눌지만 정하면 인원이 최대한 고르게 배분된 결과가 카드 형태로 나옵니다.

배분 방식은 두 가지예요. 팀 개수 지정은 3팀처럼 팀 수를 고정하고 인원을 나누는 방식이고, 팀당 인원 지정은 4명씩처럼 한 팀 크기를 고정해 놓고 필요한 팀 수를 자동으로 계산하는 방식입니다. 11명을 4명씩 나누라고 하면 3팀이 만들어지고 마지막 팀만 3명이 되는 식이에요.

나누는 순서는 먼저 전체 명단을 섞은 다음 앞에서부터 팀에 하나씩 돌아가며 배치하는 라운드로빈입니다. 그래서 인원이 딱 나누어떨어지지 않아도 팀 간 인원 차이가 한 명을 넘지 않습니다. 섞는 데 쓰는 난수는 자바스크립트의 흔한 Math.random 이 아니라 브라우저의 crypto.getRandomValues로 만든 값이라, 여러 번 돌려도 같은 조합이 반복되는 편향이 생기지 않아요. 결과가 마음에 들지 않으면 버튼을 다시 누를 때마다 완전히 새로 섞입니다.

명단은 어디에도 저장되지 않고 페이지 안에서만 처리됩니다. 실명을 그대로 붙여넣어도 서버로 넘어가는 일이 없고, 탭을 닫으면 그대로 사라집니다.

사용 방법

  1. 큰 입력칸에 참가자 이름을 한 줄에 한 명씩 적습니다. 엑셀이나 메모장에서 세로로 복사한 목록을 그대로 붙여넣어도 됩니다.
  2. 나눌 방식에서 팀 개수 지정이나 팀당 인원 지정 중 하나를 고릅니다. 고르는 순간 옆 칸의 이름표가 바뀝니다.
  3. 숫자 칸에 팀 수 또는 한 팀 인원을 넣습니다.
  4. 팀 나누기 버튼을 누르면 아래에 팀별 카드가 나타나고, 카드 제목 오른쪽에 그 팀 인원이 표시됩니다.
  5. 결과 복사를 누르면 대괄호로 팀 번호를 표시한 한 줄짜리 요약이 팀 수만큼 복사되어 단톡방에 붙여넣기 좋습니다.

궁금한 사항 있으신가요?