본문으로 건너뛰기
소이툴즈

랜덤 뽑기 · 조 나누기

이름이나 항목을 줄마다 입력하면 무작위로 뽑거나 순서를 섞고, 원하는 조 수로 균등하게 나눕니다.

입력한 항목 중 원하는 개수만큼 무작위로 고릅니다.

  • 김민준
  • 이서연
  • 박지호
  • 최수아
  • 정하윤
  • 강도윤
  • 조은우
  • 윤서아
참고 · 추첨 방식

Fisher-Yates 알고리즘과 암호학적 난수를 써서 편향 없이 섞습니다. 결과는 버튼을 누른 시점에 이미 정해지며, 룰렛과 순차 공개는 표현일 뿐 결과에 영향을 주지 않습니다. 입력한 명단은 서버로 전송되지 않습니다.

세 가지 방식

뽑기는 입력한 항목 중 원하는 개수만큼 무작위로 고릅니다. 당첨자 추첨, 발표자 선정, 점심 메뉴 고르기에 씁니다.

순서 섞기는 전체 항목의 순서를 무작위로 다시 배열합니다. 발표 순서, 면접 순서, 게임 순번을 정할 때 유용합니다.

조 나누기는 항목을 지정한 조 수로 최대한 균등하게 나눕니다. 인원이 딱 나누어떨어지지 않으면 한 명씩 차이가 나도록 배분합니다.

정말 무작위인가요

두 가지를 신경 써서 구현했습니다.

Fisher-Yates 셔플

흔히 쓰이는 방법 중에 이런 것이 있습니다.

items.sort(() => Math.random() - 0.5)

간단해 보이지만 실제로는 편향이 심합니다. 정렬 알고리즘이 비교자를 일관되게 호출한다고 가정하는데, 무작위 비교자는 그 가정을 깨뜨립니다. 결과적으로 원래 앞쪽에 있던 항목이 여전히 앞쪽에 나올 확률이 높아집니다.

이 도구는 Fisher-Yates 알고리즘을 씁니다. 뒤에서부터 하나씩 무작위 위치와 맞바꾸는 방식으로, 모든 순열이 정확히 같은 확률로 나오는 것이 수학적으로 증명되어 있습니다.

모듈로 편향 제거

난수를 원하는 범위로 맞출 때 나머지 연산을 쓰면 문제가 생깁니다.

32비트 난수를 10으로 나눈 나머지를 쓴다고 해봅시다. 2³²는 10으로 나누어떨어지지 않으므로 0~5가 6~9보다 미세하게 더 자주 나옵니다. 범위가 클수록 편향도 커집니다.

이 도구는 편향이 생기는 구간의 값을 버리고 다시 뽑아 이 문제를 없앴습니다. 난수원은 Math.random()이 아니라 브라우저의 암호학적 난수 생성기입니다.

중복 허용은 언제 쓰나요

끄는 경우 (기본) — 당첨자 뽑기, 발표 순서, 팀 배정처럼 같은 항목이 두 번 나오면 안 되는 상황입니다.

켜는 경우 — 주사위 굴리기, 랜덤 메뉴를 반복해서 고르기, 시뮬레이션처럼 매번 독립적으로 뽑아야 하는 상황입니다. 통계에서는 이를 복원 추출이라고 합니다.

중복을 허용하면 항목 수보다 많은 개수도 뽑을 수 있습니다.

조 나누기 요령

인원이 조 수로 나누어떨어지지 않으면 어떤 조는 한 명 더 많습니다. 이 도구는 섞은 뒤 순서대로 배분하므로 차이가 최대 한 명입니다.

실무에서는 완전 무작위가 늘 좋은 것은 아닙니다.

  • 역량을 고르게 섞고 싶다면 수준별로 나눠 각 조에 한 명씩 배정하는 편이 낫습니다
  • 친분을 흩뜨리고 싶다면 무작위가 적합합니다
  • 재현이 필요하다면 결과를 복사해 두세요. 새로고침하면 사라집니다

공정성이 중요한 상황이라면

경품 추첨처럼 결과에 이해관계가 걸린 경우에는 몇 가지를 갖춰 두는 것이 좋습니다.

  • 참가자 명단을 미리 공개합니다
  • 추첨 과정을 화면 공유하거나 녹화합니다
  • 결과를 즉시 캡처해 남깁니다

이 도구는 결과를 저장하지 않으므로, 나중에 "다시 돌려 보자"는 요구가 나오지 않도록 그 자리에서 확정하는 것이 중요합니다.

입력한 명단은 저장되지 않습니다

모든 처리가 브라우저 안에서 이루어지며 서버로 전송되지 않습니다. 직원 명단이나 고객 정보처럼 밖으로 나가면 곤란한 자료도 안심하고 넣을 수 있습니다.

새로고침하면 사라지므로 필요한 결과는 복사해 두시기 바랍니다.

함께 확인하면 좋은 것

시각적으로 뽑고 싶다면 사다리타기를, 숫자를 뽑는다면 로또 번호 생성기를 이용하세요.

자주 묻는 질문

최종 수정 2026년 8월 27일