랜덤 추첨기

명단을 입력하고 당첨자를 뽑거나, 발표·진행 순서를 무작위로 정해보세요. 각자의 당첨 확률을 함께 보여드립니다.

모드 선택

추첨 모드와 순서 정하기 모드는 무엇이 다른가요?

추첨 모드는 명단 중에서 정한 인원만 뽑습니다. 기본은 중복 없는 추첨(비복원 추출)이라 뽑힌 이름은 남은 후보에서 빠지고, 같은 명단으로 "추첨하기"를 반복하면 남은 사람 중에서 이어서 뽑습니다. "중복 허용"을 체크하면 뽑을 때마다 전체 명단이 후보로 유지되어 같은 사람이 여러 번 당첨될 수 있습니다.순서 정하기 모드는 전체를 섞어 1번부터 끝번까지 순서를 부여합니다. 발표·면접 순서, 청소 당번 순서, 게임 시작 순서를 정할 때 씁니다.

어떻게 공정성을 확보하나요?

이 추첨기는 명단을 피셔-예이츠(Fisher–Yates) 셔플로 섞은 뒤 앞에서부터 필요한 만큼 자릅니다. 마지막 칸부터 시작해 i번째 칸에 0~i 중 하나를 균등하게 골라 교환하는 방식으로, n명의 가능한 n!가지 배열이 모두 정확히 같은 확률(1/n!)을 갖습니다. 따라서 어느 자리가 당첨 자리든 어떤 이름이든 확률이 같습니다. 난수는 브라우저의 crypto.getRandomValues를 쓰고, 범위에 맞추는 과정에서 모듈로 편향이 생기지 않도록 범위를 벗어난 난수를 버리고 다시 뽑는 거절 샘플링을 적용했습니다. 같은 원리의 설명은 비밀번호 생성기와 UUID 생성기, 그리고 수치 범위로 직접 뽑는 랜덤 숫자 생성기에 정리되어 있습니다.

참고로 arr.sort(() => Math.random() - 0.5) 같은 한 줄 셔플은 많이 쓰이지만 공정하지 않습니다. 비교 결과가 일관되지 않아 정렬 알고리즘의 동작에 따라 특정 순열이 더 자주 나옵니다. 크롬(V8) 환경에서 원소 3개를 이 방식으로 60만 번 섞어 본 결과 원래 순서 [0,1,2]가 약 37.5%, 가장 드문 순서가 약 6.2% 나왔고 (균등이라면 모두 16.7%), 피셔-예이츠는 모든 순열이 16.6~16.7%로 고르게 나왔습니다. 이 도구는 후자를 씁니다.

한 명이 뽑힐 확률은 얼마인가요?

비복원 추첨에서 n명 중 k명을 뽑으면 모든 사람의 당첨 확률은 k/n으로 같습니다. 1번째 뽑기에서 뽑힐 확률 1/n과, 앞에서 안 뽑히고 이어서 뽑힐 확률의 합이 정확히 k/n이 되기 때문에, 먼저 뽑든 나중에 뽑든 유리·불리가 없습니다. 결과 아래에 이번 회차의 확률을 표시합니다.

명단 n뽑는 수 k중복 없음: 1인 당첨 확률중복 허용: 1인이 1회 이상 당첨중복 허용: 같은 사람이 겹칠 확률
10명1명10.00%10.00%0.00%
20명3명15.00%14.26%14.50%
30명5명16.67%15.59%29.63%
100명10명10.00%9.56%37.18%

검산 예시. 20명 중 3명을 중복 없이 뽑으면 각자 3/20 = 15.00%입니다. 같은 20명에서 3번을 중복 허용으로 뽑으면 특정인이 한 번 이상 뽑힐 확률은 1 − (19/20)3 = 14.26%로 조금 낮아지고, 3명 중 같은 사람이 겹칠 확률은 1 − (20×19×18)/203 = 14.50%입니다. 한 명씩 매번 복원 추첨을 10번 반복하면 특정인이 한 번도 안 뽑힐 확률은 (19/20)10 = 59.9%이므로, 열 번을 해도 안 뽑히는 일은 흔합니다. "나만 계속 안 걸린다"는 느낌이 있어도 조작 신호가 아닙니다.

순서 정하기: 경우의 수와 한계

n명의 순서는 n!가지입니다. 이 가운데 하나를 균등하게 고르는 것이 순서 정하기 모드의 목표입니다.

인원가능한 순서 수 (n!)특정인이 1번이 될 확률
3명633.33%
5명12020.00%
8명40,32012.50%
10명3,628,80010.00%
13명6,227,020,8007.69%

이론적으로 공정한 셔플을 만들려면 난수 생성기의 내부 상태가 n!가지 이상을 표현할 수 있어야 합니다. 128비트 상태의 일반 난수(Math.random을 구현한 엔진이 흔히 쓰는 규모)는 34명까지의 순열(34! ≈ 2.95×1038 < 2128)을 모두 표현할 수 있지만 35명 이상(35! ≈ 1.03×1040)은 일부 순열이 아예 나올 수 없습니다. 암호학적 난수는 이런 상태 제약이 없어 이 도구에서는 명단 크기와 무관하게 공정성이 유지됩니다. 실제 모임 규모(수십 명)에서는 어느 쪽이든 체감 차이는 없습니다.

공정한 추첨을 위한 운영 요령

상황별로 어떤 설정을 쓸까요?

추첨에서 자주 하는 오해

"연속으로 같은 자리가 나왔으니 조작이다"라는 의심이 가장 흔합니다. 5명 순서 정하기에서 지난번과 완전히 같은 순서가 다시 나올 확률은 1/120(약 0.83%)로 낮지만 0이 아니고, 매주 반복하면 언젠가는 나옵니다. 반대로 "한 번씩 골고루 걸려야 한다"는 기대는 중복 없는 추첨을 라운드 단위로 쓸 때만 성립합니다. 각 회차를 독립적으로 돌리면 어떤 사람은 연달아 걸리고 어떤 사람은 오래 안 걸리는 것이 무작위의 정상적인 모습입니다. 골고루가 목적이라면 중복 허용을 끄고 한 라운드를 끝까지 소진하는 방식을 쓰세요.

한계와 이 도구를 쓰면 안 되는 경우

이 도구는 참가자 간 가중치나 조건(성별·부서 안배 등)을 고려하지 않는 단순 무작위 추첨입니다. 법적 효력이 있는 경품 추첨, 선거, 채용·입학처럼 이해관계가 큰 선발은 참관인과 기록이 있는 공식 절차를 따라야 하며, 사행성 용도로 쓸 수 없습니다. 입력한 명단은 브라우저 안에서만 처리되고 서버로 전송·저장되지 않습니다. 기록 목록도 페이지를 닫으면 사라집니다. 팀을 나누려면 랜덤 팀 나누기, 게임식으로 배정하려면 사다리타기, 대진표가 필요하면토너먼트 대진표 생성기가 더 적합합니다.

자주 묻는 질문

같은 사람이 두 번 뽑힐 수도 있나요?

기본(중복 허용 해제) 상태에서는 한 번 뽑힌 이름이 후보에서 제외되므로 같은 회차 안에서도, 이어서 누른 다음 회차에서도 중복 당첨이 없습니다. "중복 허용"을 체크하면 가능합니다. "초기화"를 누르거나 명단을 수정하면 전체 명단이 다시 후보가 됩니다.

뽑을 인원 수를 명단 인원보다 많게 입력하면 어떻게 되나요?

중복 없음에서는 남은 후보 수만큼만 뽑고 멈추며, 안내 문구를 표시합니다. 예를 들어 5명 중 8명을 뽑으라고 해도 5명까지만 나옵니다. 중복 허용에서는 후보가 줄지 않으므로 입력한 인원 수만큼 뽑습니다(최대 100).

먼저 뽑히는 사람이 더 유리한가요?

아닙니다. 중복 없는 추첨에서 n명 중 k명을 뽑을 때 모든 사람의 당첨 확률은 순서와 관계없이 k/n으로 같습니다. 여러 번 나누어 뽑아도 마찬가지입니다.

결과를 조작하거나 미리 알아낼 수 있나요?

시드를 입력받지 않고 브라우저의 암호학적 난수를 사용하므로 사용자가 결과를 정하거나 재현할 수 없습니다. 다만 화면 공유 없이 혼자 돌린 결과를 알리는 방식은 신뢰 문제가 생길 수 있으니, 공개된 자리에서 진행하세요.

일부 사람에게 더 높은 확률을 줄 수 있나요?

이 도구에는 가중치 설정이 없지만, 응모권 개수에 맞춰 같은 이름을 여러 줄 넣으면 그 비율만큼 후보로 취급됩니다. 이때 중복 없는 추첨을 선택하면 같은 이름이 여러 번 당첨 목록에 나올 수 있다는 점에 유의하세요.

이름이 아니라 번호로 뽑고 싶어요.

번호를 한 줄씩 명단에 넣어도 되고, 연속된 번호면 랜덤 숫자 생성기에서 범위만 지정해 중복 없이 뽑는 편이 빠릅니다.