Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

데이터 구조의 이항 분포

<시간/>

이항 분포는 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: