베르누이 분포란?
베르누이 분포(Bernoulli Distribution)는 단 한 번의 시행에서 x = 0과 x = 1, 두 가지 결과만 가능한 이산 확률 분포입니다. 여기서 x = 1은 '성공(success)'을, x = 0은 '실패(failure)'를 의미합니다. 성공이 일어날 확률은 p이고, 실패가 일어날 확률은 q = 1 − p로 정의됩니다.
베르누이 분포의 확률질량함수(PMF)는 다음과 같습니다.
$$P(x)=\begin{cases}1-p & \text{for } x = 0\\p & \text{for } x = 1\end{cases}$$
이 식은 아래와 같이 하나의 수식으로 더 간결하게 표현할 수도 있습니다.
$$P(x)=p^{x}(1-p)^{1-x}$$
주요 특성
- 기댓값: E[X] = p
- 분산: Var(X) = p(1 − p)
- 독립적인 베르누이 시행을 여러 번 반복하면 이항 분포(Binomial Distribution)가 됩니다.
C++ 예제 코드
다음 예제는 C++의 <random> 헤더에 포함된 bernoulli_distribution을 사용하여, 성공 확률이 0.7인 베르누이 시행을 10,000번 반복 수행하고 그 결과를 집계하는 코드입니다.
#include <iostream>
#include <random>
using namespace std;
int main(){
const int nrolls=10000;
default_random_engine generator;
bernoulli_distribution distribution(0.7);
int count=0; // 참(true)의 개수를 세는 변수
for (int i=0; i<nrolls; ++i)
if (distribution(generator))
count++;
cout << "bernoulli_distribution (0.7) x 10000:" << endl;
cout << "true: " << count << endl;
cout << "false: " << nrolls-count << endl;
}실행 결과
bernoulli_distribution (0.7) x 10000: true: 7024 false: 2976
실행 결과를 보면, 10,000번의 시행 중 약 7,024번(70.24%)이 true(성공), 약 2,976번(29.76%)이 false(실패)로 나타났습니다. 이는 설정한 성공 확률 p = 0.7에 매우 근접한 값으로, 시행 횟수가 충분히 많을 때 실제 빈도가 이론적 확률에 수렴한다는 베르누이 분포의 핵심 성질을 잘 보여줍니다.