การแจกแจงทางเรขาคณิตเป็นการแจกแจงความน่าจะเป็นแบบไม่ต่อเนื่องสำหรับ n =0, 1, 2, …. มีฟังก์ชันความหนาแน่นของความน่าจะเป็น
$$P\lgroup n\rgroup=p\lgroup1-p\rgroup^{n}$$
ฟังก์ชันการกระจายคือ −
$$D\lgroup n\rgroup=\displaystyle\sum\limits_{i=0}^n P\lgroup i \rgroup=1-q^{n+1}$$
ตัวอย่าง
#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; 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; }
ผลลัพธ์
0: ***************************** 1: ******************** 2: *************** 3: ********** 4: ******* 5: **** 6: *** 7: ** 8: * 9: *