Toolify

난수 생성기 (암호학적 안전, 고유 모드)

최소, 최대, 카운트 선택해 암호학적 안전 무작위 정수 생성. 비복원 샘플(추첨, 복권)에 '고유' 토글.

범위 설정하고 '재생성' 클릭해 난수 도출.

작동 방식

왜 이것이 실제로 무작위

Math.random() 대신 crypto.getRandomValues — 브라우저의 암호학적으로 안전한 무작위 소스 — 사용. CSPRNG 출력은 이전 값에서 예측 불가, 복권 선택, 도박 인접 애플리케이션, '무작위'가 단순 '임의'가 아닌 실제 요구사항인 모든 사용에 중요.

또한 거부 샘플링 사용해 선택 범위 전반에 분포 정확히 균일하게 함. 단순 '무작위 % 범위'는 범위가 2³²로 균등 나누지 못할 때 편향 도입. 거부 샘플링은 편향 일으킬 값을 버리고 다시 시도, 그래서 범위의 모든 숫자가 정확히 같은 확률 가짐.

고유 vs 중복 허용

기본 모드: 각 숫자 독립 — 중복 발생 가능. 캐주얼 사용에서 보통 '무작위' 의미(주사위 굴리기, 영화 선택, 무작위 테스트).

고유 모드: 비복원 샘플 — 한 번 선택한 숫자는 같은 배치에 다시 선택 안 됨. 유용: 복권 선택(예: 1-49에서 6 숫자), 추첨(승자 추첨), 팀 배정, 'M에서 N 선택' 모든 상황. 카운트 ≤ 범위 필요.

흔한 사용 사례

복권 / 추첨: 1-49(또는 추첨이 사용하는 것)에서 6 고유 숫자. '고유' ON 토글.

주사위 굴리기: 범위 1-6(또는 D20에 1-20). 각 굴림 독립적이도록 '고유' OFF.

테스트용 무작위 샘플링: 1-10000에서 10 무작위 사용자 ID 스팟 체크. 중복 회피에 '고유' 사용.

동전 던지기 시뮬레이션: 범위 0-1, 다중 결과. 공정성 검사에 앞/뒤 집계(큰 샘플에 ~50/50 보임).

자주 묻는 질문

추첨이나 복권에 공정?

무작위성은 암호학적으로 안전하고 편향 없음. 공식 복권에 법적으로 '공정'한지는 관할권 규칙에 따라 — 많은 곳이 인증 하드웨어 RNG 요구.

Math.random()과 차이?

Math.random()은 공격자가 이전 출력에서 출력 예측 가능한 알고리즘 사용. crypto.getRandomValues는 예측 불가 OS 수준 암호 RNG 사용. 실제 공정성에는 이것 사용.

음수 가능?

네. 최소를 음수로 설정.

최대 범위?

JavaScript의 안전 정수 범위(~2⁵³)로 제한, 그러나 실용적으로 수십억까지 문제 없이 가능. 거부 샘플링 기법이 어떤 범위든 올바르게 처리.

왜 '고유'가 카운트 > 범위일 때 실패?

1-5에서 10 고유 선택하면 4개 존재 안 함. 검증이 이를 잡아 범위 넓히거나 카운트 줄이라고 요청.

주사위 굴리기에 작동?

네 — 범위 1-6(또는 주사위에 맞게) 설정하고 각 굴림 독립적이도록 '고유' OFF.

시드 저장하고 재현?

안 됨 — 안전 무작위는 디자인상 시드 없음. 테스트에 재현 가능 '무작위' 필요하면 시드 PRNG 라이브러리 사용.

데이터가 전송되나요?

전송되지 않습니다. 생성 완전히 로컬.

관련 도구

최종 업데이트: