회식 장소를 정하는데 의견이 갈린다. 메뉴도 세 가지, 참석자도 열 명. 결국 "숫자 하나 뽑자"로 귀결된다. 문제는 머릿속으로 떠올린 숫자는 무작위가 아니라는 점이다. 사람은 1, 7, 3 같은 특정 숫자를 편향적으로 고르는 경향이 있다.
무작위 숫자가 필요한 상황
| 상황 | 범위 | 조건 |
|---|---|---|
| 순서 정하기 | 1~참석 인원 수 | 중복 없이 |
| 로또 번호 | 1~45 | 6개, 중복 없이 |
| 동전 던지기 | 1~2 | 앞/뒤 |
| 주사위 | 1~6 | 1~2개 |
| 경품 추첨 | 1~응모 번호 범위 | 당첨자 수만큼 |
조건별 랜덤 숫자 생성법
기본: 범위 지정 생성
최소값과 최대값을 정하고 생성 개수를 입력하면 된다. 1부터 100 사이에서 5개를 뽑는 식이다. 정수뿐 아니라 소수점 포함 숫자도 생성할 수 있다.
중복 없는 추첨
순서 정하기나 로또 번호처럼 같은 숫자가 나오면 안 되는 경우에는 중복 제외 옵션을 켠다. 1~30 범위에서 10개를 중복 없이 뽑으면 깔끔한 순서 배정이 된다.
정렬된 결과
뽑힌 숫자를 오름차순으로 정렬해서 보고 싶으면 정렬 옵션을 켜면 된다. 로또 번호를 작은 수부터 나열할 때 유용하다.
참고 랜덤 숫자 생성기는 암호학적으로 안전한 난수 생성기(CSPRNG)를 사용한다. 단순한 Math.random()이 아니라 crypto API 기반이라 예측이 불가능하고, 추첨 용도로 쓰기에 공정성이 확보된다.
프리셋으로 빠르게 쓰기
매번 범위를 입력하기 번거로우면 프리셋 버튼을 쓰면 된다.
- 1~10 — 소규모 인원 순서 정하기
- 1~100 — 범용 추첨
- 로또 — 1~45에서 6개 자동 생성
- 동전 던지기 — 앞(1) 또는 뒤(2)
- 주사위 — 1~6 중 1개 또는 2개
결과와 함께 최소값, 최대값, 평균, 합계 같은 통계도 자동으로 보여주고, 최근 20번의 생성 기록이 저장되니 이전 결과를 다시 확인할 수도 있다.
공정한 추첨은 사람 머리가 아니라 난수 알고리즘에 맡기는 게 맞다. 10초면 끝나는 일이다.