이항 분포는 N개의 베르누이 트레일에서 n개의 성공을 얻는 이산 확률 분포 Pp(n | N)입니다(x =0 및 x =1로 레이블이 지정된 두 가지 가능한 결과를 가짐. x =1은 성공이고 x =0은 실패. 성공은 확률 p로 발생하고 실패는 확률 q로 q =1 – p입니다.) 따라서 이항 분포는 다음과 같이 쓸 수 있습니다.
$$P_{p}\lgroup n\:\arrowvert\ N\rgroup=\left(\begin{array}{c}N\\ n\end{array}\right) p^{n}\lgroup1-p \r그룹^{N-n}$$
예시
#include <iostream> #include <random> using namespace std; int main(){ const int nrolls = 10000; // number of rolls const int nstars = 100; // maximum number of stars to distribute default_random_engine generator; binomial_distribution<int> distribution(9,0.5); int p[10]={}; for (int i=0; i<nrolls; ++i) { int number = distribution(generator); p[number]++; } cout << "binomial_distribution (9,0.5):" << endl; for (int i=0; i<10; ++i) cout << i << ": " << string(p[i]*nstars/nrolls,'*') << endl; }
출력
0: 1: * 2: ****** 3: *************** 4: ************************* 5: ************************ 6: **************** 7: ******* 8: * 9: