난수 생성기란?
난수 생성기는 정해진 범위에서 무작위 숫자를 뽑습니다. 추첨, 순서 정하기, 제비뽑기, 로또 번호 선택처럼 치우치지 않은 선택이 필요할 때 씁니다.
이 도구는 브라우저의 crypto.getRandomValues를 씁니다. 자바스크립트의 Math.random보다 예측이 어려운 암호학적 난수원이라 추첨에 쓰기에 적합합니다. 생성된 숫자는 서버로 전송되지 않고 브라우저 안에서만 만들어집니다.
사용 방법
- 최소값과 최대값으로 범위를 정합니다. 음수도 넣을 수 있습니다.
- 뽑을 개수를 정합니다.
- '중복 없이 뽑기'를 켜면 같은 숫자가 두 번 나오지 않습니다. 로또 번호처럼 쓸 때 켭니다.
- '다시 뽑기'를 누르면 새로 뽑고, 최근 10회 기록이 아래에 남습니다.
위쪽 버튼으로 로또, 주사위, 동전, 제비뽑기 설정을 한 번에 맞출 수 있습니다.
계산 방법
[중복 허용]
각 숫자 = 최소값 + (0 이상 범위크기 미만의 난수)
[중복 없음]
범위 전체를 배열로 만들어 피셔-예이츠 방식으로 섞고 앞에서 필요한 개수만 꺼낸다| 용도 | 범위 | 개수 | 중복 |
|---|---|---|---|
| 로또 번호 | 1 ~ 45 | 6개 | 없음 |
| 주사위 | 1 ~ 6 | 1개 | 허용 |
| 동전 던지기 | 1 ~ 2 | 1개 | 허용 |
| 발표 순서 (10명) | 1 ~ 10 | 10개 | 없음 |
| 백분율 추첨 | 1 ~ 100 | 1개 | 허용 |
활용 예시
반 학생 30명의 발표 순서를 정하려면 범위를 1~30, 개수를 30으로 하고 '중복 없이 뽑기'를 켭니다. 1부터 30까지가 무작위 순서로 모두 나오므로 그 순서대로 발표하면 됩니다.
범위보다 많이 뽑으라고 하면 범위 전체만 나옵니다. 1~5에서 중복 없이 10개를 요청하면 5개만 나옵니다. 더 뽑을 숫자가 없기 때문입니다.
자주 묻는 질문
- 정말 무작위인가요?
- 브라우저의 crypto.getRandomValues를 쓰므로 운영체제가 제공하는 암호학적 난수원을 사용합니다. 추첨이나 게임 용도로는 충분히 예측 불가능합니다. 다만 공식 추첨처럼 법적 효력이 필요한 경우에는 검증된 추첨 절차를 따라야 합니다.
- 같은 숫자가 연속으로 나오는데 고장난 건가요?
- 정상입니다. 1~10에서 두 번 연속 같은 숫자가 나올 확률은 10분의 1로 드물지 않습니다. 무작위는 고르게 분포한다는 뜻이 아니라 각 뽑기가 독립적이라는 뜻입니다. 겹치지 않게 하려면 '중복 없이 뽑기'를 켜세요.
- 로또 번호를 이걸로 뽑으면 당첨 확률이 높아지나요?
- 달라지지 않습니다. 모든 번호 조합의 확률이 같기 때문에 어떤 방식으로 뽑아도 814만분의 1입니다. 번호 선택의 수고를 덜어 주는 용도로만 쓰세요.
- 뽑은 숫자가 저장되나요?
- 저장되지 않습니다. 최근 10회 기록은 화면에만 남고 새로 고치면 사라집니다. 서버로 전송되는 것도 없습니다. 필요하면 '복사'로 따로 보관하세요.
- 소수나 문자도 뽑을 수 있나요?
- 정수만 뽑습니다. 문자나 이름을 추첨하려면 목록에 번호를 붙여 두고 번호를 뽑는 방식으로 쓰면 됩니다.
계산 기준 · 브라우저의 Web Crypto API(crypto.getRandomValues)를 난수원으로 씁니다. 중복 없이 뽑을 때는 피셔-예이츠 셔플을 부분 적용해 범위가 좁은 경우에도 편향이나 무한 재시도가 생기지 않도록 했습니다. 모든 계산은 브라우저에서 이루어지며 입력과 결과가 서버로 전송되지 않습니다.