본문으로 건너뛰기
AZ Tools

랜덤 분포 생성기

균등·정규·지수·푸아송·베르누이·삼각 분포에서 표본을 생성합니다. 히스토그램, 통계 요약, CSV/JSON 내보내기 제공. crypto.getRandomValues 기반.

사용법

  1. 분포를 선택하고 파라미터를 조정합니다.
  2. 표본 개수(최대 5,000)와 소수점 자릿수를 설정합니다.
  3. 생성 버튼을 누르면 히스토그램과 통계가 즉시 표시됩니다.
  4. CSV · JSON · 줄바꿈 구분 형식으로 복사할 수 있습니다.

자세한 설명

펼치기

여섯 가지 흔한 분포 — 균등, 정규, 지수, 푸아송, 베르누이, 삼각 — 에서 최대 5,000개의 표본을 뽑고, 각 분포의 고유한 매개변수를 조절하며, 결과를 히스토그램과 함께 평균·표준편차·최솟값·최댓값·중앙값으로 확인합니다. 수업용으로, 시뮬레이션 시드로, A/B 테스트 검산용으로, 또는 균등하지 않고 현실적인 모양을 가진 시험 데이터를 만드는 데 쓸 수 있습니다.

표본 추출기는 모두 표준적인 구성입니다. 정규분포 값은 박스-뮐러 변환에서 나오는데, 제곱근과 코사인을 통해 균등 난수 두 개를 독립적인 정규 난수 두 개로 바꿉니다. 지수분포는 역변환 표본추출을 씁니다. 균등 난수의 음의 로그를 비율로 나눈 값입니다. 푸아송은 비율이 30 미만이면 정확합니다. 균등 난수를 곱해 나가다 곱이 e^−λ 아래로 떨어질 때까지 세는 크누스의 방법을 쓰고, 그 위에서는 반올림한 정규 근사로 전환합니다. 정확한 방법은 λ 한 단위당 균등 난수를 하나씩 소모해서 큰 비율에서는 느려지기 때문입니다. 근사는 몸통에서 훌륭하고 꼬리에서 약간 어긋나는데, 모든 라이브러리가 같은 지점에서 같은 거래를 합니다.

난수는 Math.random이 아니라 crypto.getRandomValues에서 오지만, 그 이유는 흔히 말해지는 것보다 좁습니다. 히스토그램을 그리는 데에는 브라우저 내장 생성기도 통계적으로 충분합니다. 표준 검정 묶음을 통과하고, 5,000개 표본으로는 차이를 알아챌 수도 없습니다. 암호학적 난수원이 사 주는 것은 예측 불가능성이고, 그것은 출력이 적이 맞혀서는 안 되는 무언가의 시드가 될 때 중요하며, 여기서는 비용이 들지 않습니다.

5,000개는 꼬리에 관한 어떤 것에도 작은 수입니다. 그만큼의 정규 난수 평균은 표준오차가 약 0.014σ이므로, 표시되는 값은 실행할 때마다 소수 둘째 자리에서 흔들립니다. 버그가 아니라 표본추출이 제대로 작동하고 있다는 뜻입니다. 구간 수도 겉보기 모양을 바꿉니다. 너무 적으면 쌍봉 분포가 가려지고, 너무 많으면 매끄러운 분포가 잡음이 됩니다. 예상하지 못한 모양에 대해 결론을 내리기 전에 구간 수를 먼저 움직여 보세요.

자주 묻는 질문

표본은 어떻게 생성되나요?

균등 [0, 1) 난수는 모두 crypto.getRandomValues(Uint32Array)로 생성한 뒤 [0, 1) 범위의 double로 정규화합니다. 정규는 Box-Muller, 지수는 역CDF(-ln U / λ), 푸아송은 λ < 30일 때 Knuth 알고리즘 · 그 이상은 정규 근사, 베르누이는 단일 비교, 삼각은 역CDF 공식을 사용합니다.

암호학적으로 안전한가요?

기반 crypto.getRandomValues는 그렇지만, 변환(예: Box-Muller)을 거치면 통계적 품질은 유지돼도 암호학적 보장은 사라집니다. 키나 토큰이 아닌 시뮬레이션/통계 용도로만 쓰세요.

작은 N에서 히스토그램이 들쭉날쭉한 이유는?

유한 표본 노이즈입니다. 정규 분포에서 매끄러운 종 모양을 보려면 표본 수를 늘리거나 빈 수를 줄이세요.

삼각 분포는 어디에 쓰나요?

최솟값/최빈값/최댓값 추정치만 있고(예: PERT 프로젝트 작업 기간), 평탄하지 않으면서도 경계가 있는 분포가 필요할 때 유용합니다.

관련 도구