랜덤 뽑기
숫자를 뽑거나, 이름 목록에서 당첨자를 고르거나, 순서를 무작위로 섞습니다. 추첨은 암호학적 난수로 하고 결과는 어디에도 저장되지 않습니다.
숫자 뽑기
이름·항목 뽑기
한 줄에 하나씩 입력하세요.
입력한 이름은 브라우저 밖으로 나가지 않습니다.
"무작위"에도 좋고 나쁨이 있습니다
대부분의 추첨 도구는 Math.random()을 씁니다. 빠르지만 예측이 가능한 방식이고,
같은 조건에서 다음 값을 맞힐 수 있는 구현도 있습니다. 이 페이지는 브라우저에 내장된
암호학적 난수 생성기를 사용합니다.
나머지 연산의 함정
난수를 원하는 범위로 줄일 때 흔히 나머지 연산을 씁니다. 그런데 난수의 전체 범위가 뽑으려는 범위로 딱 나누어떨어지지 않으면 앞쪽 숫자가 아주 조금 더 자주 나옵니다. 한두 번 뽑을 때는 티가 안 나지만, 추첨을 반복하면 쌓입니다.
그래서 이 도구는 치우침이 생기는 구간의 값이 나오면 버리고 다시 뽑습니다. 결과의 공정함이 이 도구의 유일한 기능이기 때문입니다.
섞기는 어떻게 하나요
피셔-예이츠(Fisher–Yates) 방식으로 섞습니다. 뒤에서부터 하나씩 짚어 가며 아직 안 정해진 자리 중 하나와 맞바꾸는 방법이고, 모든 순서가 똑같은 확률로 나오는 것이 증명돼 있습니다. "정렬 함수에 난수를 넣어 섞는" 흔한 방법은 순서가 고르게 나오지 않습니다.
이럴 때 이렇게 씁니다
응모자 명단을 붙여넣고 뽑을 인원을 정하면 중복 없이 뽑습니다. 뽑은 결과는 다시 만들 수 없으므로 화면을 갈무리해 두면 나중에 근거로 쓸 수 있습니다.
순서 섞기로 명단을 한 번 섞은 뒤 위에서부터 잘라 나누면 조가 고르게 나뉩니다. 조마다 따로 뽑는 것보다 한 번에 섞는 쪽이 간단하고 치우침도 없습니다.
이름 목록을 넣고 섞으면 그대로 순번이 됩니다. 가나다순이나 번호순은 늘 같은 사람이 먼저가 되므로, 반복되는 일에는 매번 섞는 편이 공평합니다.
자주 틀리는 곳
1에서 10 중에 아무거나 고르라고 하면 7이 압도적으로 많이 나옵니다. 양 끝과 반복되는 숫자를 무의식적으로 피하기 때문입니다. 공정해야 하는 자리에서는 사람의 직감 대신 뽑기를 쓰는 편이 낫습니다.
이 도구는 매번 새 난수를 씁니다. 결과를 남겨야 한다면 뽑은 직후에 갈무리하거나 옮겨 적으세요. 새로고침하면 사라집니다.
경품 고시 대상이나 공공 추첨처럼 공정성을 증명해야 하는 자리는 공증이나 정해진 기관 절차를 따라야 합니다. 이 도구는 그런 절차를 대신하지 않습니다.
자주 묻는 질문
브라우저에 내장된 암호학적 난수 생성기(crypto.getRandomValues)를 사용하고, 나눗셈에서 생기는 미세한 치우침까지 제거하는 방식(rejection sampling)으로 뽑습니다. 지원하지 않는 오래된 브라우저에서는 일반 난수로 대체됩니다.
한 번 나온 숫자는 다시 나오지 않는다는 뜻입니다. 로또처럼 서로 다른 숫자를 여러 개 뽑을 때 씁니다. 중복을 허용하면 주사위를 여러 번 굴리는 것과 같아 같은 숫자가 다시 나올 수 있습니다.
저장되지 않습니다. 계산과 추첨이 모두 브라우저 안에서 이뤄지고, 입력한 이름이나 항목도 서버로 전송되지 않습니다.
섞기 버튼을 누르면 입력한 목록 전체가 무작위 순서로 다시 배열됩니다. 발표 순서나 조 편성을 정할 때 씁니다.