Main Content

균등분포의 역을 사용하여 난수 생성하기

이 예제에서는 균등분포 역산법을 사용하여 난수를 생성하는 방법을 보여줍니다. 이는 역누적 분포 함수를 계산할 수는 있지만 해당 분포에서 직접 표본 추출하는 것은 불가능한 분포에 유용합니다.

1단계. 표준 균등분포에서 난수 생성하기.

rand를 사용하여 구간 (0,1)의 균등분포에서 1,000개의 난수를 생성합니다.

rng('default')  % For reproducibility
u = rand(1000,1);

역함수 방법은 연속 누적 분포 함수(cdf)가 열린 구간 (0,1)에 걸쳐 균일하다는 원칙을 기반으로 합니다. u가 (0,1)에서 균일하게 분포된 난수인 경우 x=F-1(u)는 지정된 cdf F를 갖는 임의의 연속 분포에서 난수 x를 생성합니다.

2단계. 베이불 분포에서 난수 생성하기.

역누적 분포 함수를 사용하여 u의 확률에 대응하는 모수 A = 1B = 1의 베이불 분포에서 난수를 생성합니다. 결과를 플로팅합니다.

x = wblinv(u,1,1);
histogram(x,20);

Figure contains an axes object. The axes object contains an object of type histogram.

이 히스토그램은 베이불 역 cdf wblinv를 사용하여 생성한 난수가 베이불 분포를 갖는다는 것을 보여줍니다.

3단계. 표준 정규분포에서 난수 생성하기.

u에 동일한 값을 사용하면 원하는 분포의 역 cdf를 사용하는 동일한 절차를 따라 임의의 분포(예: 표준 정규분포)에서 난수를 생성할 수 있습니다.

figure
x_norm = norminv(u,1,1);
histogram(x_norm,20)

Figure contains an axes object. The axes object contains an object of type histogram.

이 히스토그램은 표준 정규분포의 역 cdf norminv를 사용하여 u에서 생성한 난수가 이제 표준 정규분포를 갖는다는 것을 보여줍니다.

참고 항목

| | |

관련 항목