Just Do IT

[확률] 특정 확률 분포를 따르는 난수 생성기는 어떻게 만들어질까 본문

데이터사이언스-기초수학/통계학

[확률] 특정 확률 분포를 따르는 난수 생성기는 어떻게 만들어질까

풀용 2023. 2. 2. 00:01

1. 균등분포 생성기

가장 먼저 직관적으로 쉽게 생각할 수 있는 확률분포는 균등분포입니다. 파이썬의 균등분포 생성기는 메르센 트위스터 알고리즘을 통해 만들어집니다. 메르센 트위스터 알고리즘은 주기가 $ 2^{19937} - 1 $로 반복되기 때문에 정확히는 유사 난수 생성기에 속합니다. 나온 값을 주기로 나누어 0부터 1까지의 float을 출력할 수 있습니다.

 

https://datascienceschool.net/03%20machine%20learning/19.01%20%EB%AA%AC%ED%85%8C%EC%B9%B4%EB%A5%BC%EB%A1%9C%20%EB%B2%A0%EC%9D%B4%EC%A7%80%EC%95%88%20%EB%B6%84%EC%84%9D.html

 

몬테카를로 베이지안 분석 — 데이터 사이언스 스쿨

.ipynb .pdf to have style consistency -->

datascienceschool.net

 

2. 특정 확률 분포를 따르는 난수 생성기

특정 확률 분포를 따르는 난수 생성기는 균등분포와 해당 확률 분포의 누적 밀도 함수의 역함수만 알면 만들 수 있습니다. 

 

2-1. 연속형 확률 분포의 누적 밀도 함수(CDF)는 균등분포(Uniform distribution)를 따른다.

누적 밀도 함수는 주어진 확률 변수가 특정 값보다 작거나 같을 확률을 말합니다. $ Pr(X <= x) $

https://ko.wikipedia.org/wiki/%EB%88%84%EC%A0%81_%EB%B6%84%ED%8F%AC_%ED%95%A8%EC%88%98

 

누적 분포 함수 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 확률론에서 누적분포함수(累積分布函數, 영어: cumulative distribution function, 약자 cdf)는 주어진 확률 변수가 특정 값보다 작거나 같은 확률을 나타내는 함수이다.

ko.wikipedia.org

따라서 CDF는 0 ~ 1사이의 값을 갖는 단조증가 함수가 됩니다. 이를 통해 CDF가 균등분포를 따른다는 것을 증명할 수 있습니다.

 

확률변수 $ X $는 CDF가 $ F_X(x) $인 연속형 확률 변수 일 때 $ Y = F_X(x) $라고 정의 한다면,

위와 같이 CDF가 Uniform distribution을 따르는 것을 알 수 있습니다. CDF는 0~1사이의 값을 갖기 때문에 y는 0과 1사이의 값을 갖고 y에 값을 넣으면 자기 자신의 값이 나오기 때문입니다.

 

2-2. 특정 확률분포의 난수 생성기

위의 성질을 이용하면 특정 확률분포의 난수생성기를 만들 수 있습니다.

확률 변수 $ X $에 대하여 CDF는 $ F_X(x) = P(X <= x)  = p $로 표현 된다면 $ p \sim U(0,1) $이 됩니다. 

$ F_X(x) $를 역함수 취하면 $ F_X^{-1}(p) = x $가 됩니다. 즉, 확률변수 $ X $의 난수는 자신의 CDF의 역함수에 기본 uniform distribution에서 나온 난수를 대입하여 얻을 수 있다는 뜻입니다. $ X $가 어떤 확률 분포를 따르는지는 상관 없이 말입니다. 이를 이용하여 여러가지 난수 생성기를 만들 수 있습니다.

 

3. 지수분포를 따르는 난수생성기

지수분포의 확률 밀도 함수는

$$ f(x; \lambda) =  \begin{Bmatrix}
\lambda e^{- \lambda x} \quad x \geq  0 \\
0 \qquad x \leq 0
\end{Bmatrix} $$  

 

누적 분포 함수는

$$ F(x; \lambda) =  \begin{Bmatrix}
1- e^{- \lambda x} \quad x \geq  0 \\
0 \qquad x \leq 0
\end{Bmatrix} $$  

이다.

$ X = F_Y(U) $ 로 지수분포를 따르는 확률변수 X의 난수를 생성 할 수 있는데 아래처럼 유도 할 수 있다.

따라서 위의 마지막 식 처럼 lambda값에 따른 지수분포를 따르는 난수를 생성 할 수 있게 된다.

Comments