난수 생성기

랜덤 숫자
다음

지정한 범위에서 난수를 생성합니다. 정수 또는 소수를 선택하고, 최솟값과 최댓값을 설정하며, 한 번에 생성할 개수와 중복 허용 여부를 지정할 수 있습니다. 브라우저의 암호학적 난수 생성기(RNG)를 기반으로 하므로 출력 결과는 통계적 무작위성 검사를 통과합니다.

난수를 생성하는 방법

  1. 1

    범위 설정

    최솟값과 최댓값은 모두 포함됩니다. 두 값 모두 음수일 수 있습니다.

  2. 2

    유형 선택

    정수 또는 소수를 선택합니다. 소수의 경우 표시할 자릿수를 지정하세요.

  3. 3

    개수와 중복 여부 설정

    중복을 허용하거나(독립적인 추첨) 모두 고유하게 요구할 수 있습니다(같은 숫자가 두 번 나타나지 않음).

  4. 4

    생성

    복사 모드에 따라 숫자가 쉼표로 구분되거나 한 줄에 하나씩 표시됩니다.

여기서 ‘무작위’란 무엇을 의미하는가

이 도구는 운영체제의 엔트로피 풀에서 값을 가져오는 Web Crypto API(crypto.getRandomValues)를 사용합니다. 32비트에 들어가는 범위라면 실용적인 목적에서는 진정한 무작위성과 구분할 수 없으며, dieharderTestU01 테스트 스위트도 통과합니다.

아주 작은 범위(2~255)에서는 모듈러 편향을 피하기 위해 거부 표본추출법을 사용합니다. 이를 적용하지 않으면 일부 숫자가 약간 더 자주 나타나게 됩니다.

대표적인 사용 사례

사용 설정
주사위 굴리기(d6) 정수 1~6
복권 시뮬레이션(49개 중 6개) 정수 1~49, 개수 6, 고유
테스트 데이터(ID) 정수 1000~9999, 고유
소수 시뮬레이션 소수 0~1, 6자리
동전 던지기 정수 0~1
N개의 응모 중 당첨자 선택 정수 1~N, 개수 1

규제가 따르는 용도

법적 요건이나 감사 요건이 있는 상황(도박, 공식 추첨, 암호화 키 등)에서는 출처 기록을 갖춘 인증된 RNG를 사용해야 합니다. 브라우저 RNG는 우수하지만 인증을 받지는 않았습니다.

자주 묻는 질문

32비트 난수를 10으로 나눈 나머지를 취하면, 32비트 범위의 마지막 몇 개 값 때문에 9보다 0이 약간 더 많이 나타납니다. 작은 범위에서는 이 편향이 무시할 만하지만, 도박 수준의 공정성이 필요하다면 거부 표본추출법을 사용해야 합니다(이 도구가 바로 이를 적용합니다).

아니요. Web Crypto API는 시드를 지정할 수 없으며, 이는 의도된 설계입니다. 재현성이 필요하다면(공유 테스트 데이터, 과학 실험 등) 시드를 지원하는 PRNG 라이브러리를 대신 사용하세요.

안전한 정수의 경우 최대 2^53 - 1까지 가능하며, 이는 암호 용도가 아닌 거의 모든 경우를 포괄합니다. 임의 정밀도가 필요하면 전용 큰 정수(big-integer) 도구를 사용하세요.

네. 최솟값과 최댓값 모두 출력 범위에 포함됩니다(표시되는 자릿수의 정밀도 내에서).

관련 도구

이 도구는 다른 언어로도 제공됩니다