Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Geometric Distribution ในโครงสร้างข้อมูล


นิยาม

Geometric Distribution เป็น Discrete Probability Distribution สำหรับ n = 0, 1, 2, ... มี Probability Density Function:

$$P(n) = p(1-p)^{n}$$

Distribution Function:

$$D(n) = \sum_{i=0}^{n} P(i) = 1 - q^{n+1}$$

ตัวอย่าง C++

#include <iostream>
#include <random>
using namespace std;

int main() {
    const int nrolls = 10000;
    const int nstars = 100;
    default_random_engine generator;
    geometric_distribution<int> distribution(0.3);
    int p[10] = {};
    for (int i = 0; i < nrolls; ++i) {
        int number = distribution(generator);
        if (number < 10) p[number]++;
    }
    cout << "Geometric_distribution (0.3):" << endl;
    for (int i = 0; i < 10; ++i)
        cout << i << ": " << string(p[i] * nstars / nrolls, '*') << endl;
}

Output

0: *****************************
1: ********************
2: ***************
3: **********
4: *******
5: ****
6: ***
7: **
8: *
9: *