균등분포의 역을 사용하여 난수 생성하기
이 예제에서는 균등분포 역산법을 사용하여 난수를 생성하는 방법을 보여줍니다. 이는 역누적 분포 함수를 계산할 수는 있지만 해당 분포에서 직접 표본 추출하는 것은 불가능한 분포에 유용합니다.
1단계. 표준 균등분포에서 난수 생성하기.
rand
를 사용하여 구간 (0,1)의 균등분포에서 1,000개의 난수를 생성합니다.
rng('default') % For reproducibility u = rand(1000,1);
역함수 방법은 연속 누적 분포 함수(cdf)가 열린 구간 (0,1)에 걸쳐 균일하다는 원칙을 기반으로 합니다. 가 (0,1)에서 균일하게 분포된 난수인 경우 는 지정된 cdf F
를 갖는 임의의 연속 분포에서 난수 를 생성합니다.
2단계. 베이불 분포에서 난수 생성하기.
역누적 분포 함수를 사용하여 u
의 확률에 대응하는 모수 A = 1
및 B = 1
의 베이불 분포에서 난수를 생성합니다. 결과를 플로팅합니다.
x = wblinv(u,1,1); histogram(x,20);
이 히스토그램은 베이불 역 cdf wblinv
를 사용하여 생성한 난수가 베이불 분포를 갖는다는 것을 보여줍니다.
3단계. 표준 정규분포에서 난수 생성하기.
u
에 동일한 값을 사용하면 원하는 분포의 역 cdf를 사용하는 동일한 절차를 따라 임의의 분포(예: 표준 정규분포)에서 난수를 생성할 수 있습니다.
figure x_norm = norminv(u,1,1); histogram(x_norm,20)
이 히스토그램은 표준 정규분포의 역 cdf norminv
를 사용하여 u
에서 생성한 난수가 이제 표준 정규분포를 갖는다는 것을 보여줍니다.
참고 항목
wblinv
| norminv
| rand
| hist