유틸리티

랜덤 숫자 뽑기, 추첨부터 로또 번호까지 무작위 생성법

회식 장소를 정하는데 의견이 갈린다. 메뉴도 세 가지, 참석자도 열 명. 결국 "숫자 하나 뽑자"로 귀결된다. 문제는 머릿속으로 떠올린 숫자는 무작위가 아니라는 점이다. 사람은 1, 7, 3 같은 특정 숫자를 편향적으로 고르는 경향이 있다.

무작위 숫자가 필요한 상황

상황범위조건
순서 정하기1~참석 인원 수중복 없이
로또 번호1~456개, 중복 없이
동전 던지기1~2앞/뒤
주사위1~61~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초면 끝나는 일이다.