一、功能
產生二項式分布的隨機數。
二、方法簡介
二項式分布的概率密度函數為
\[f(x)=C_{n}^{x}p^{x}(1-p)^{n-x} \qquad x \in \left \{ 0,1,...,n \right \} \]
用\(Bin(n,p)\)表示。二項式分布的均值為\(np\),方差為\(np(1-p)\)。當\(n=1\)時,\(Bin(n,p)\)就是貝努利分布\(BN(p)\)。
若\(y_i(i=1,2,...,n)\)是獨立同分布(IID)的參數為\(p\)的貝努利分布隨機變量,則\(x=\sum_{i=1}^{m}y_{i}\)服從二項分布\(Bin(n,p)\)。因此,產生二項分布隨機變量\(x\)的具體算法如下:
- 產生IID貝努利分布的隨機數\(y_1,y_2,...,y_n\),即\(y_i \sim BN(p)\);
- 計算\(x=\sum_{i=1}^{m}y_{i}\)。
三、使用說明
是用C語言實現產生二項分布隨機數的方法如下:
/************************************
n ---二項分布分布參數n
p ---二項分布分布參數p
s ---隨機數種子
************************************/
#include "bn.c"
int bin(int n, double p, long int *s)
{
int i;
double x;
u = uniform(0.0, 1.0, s);
for(x = 0.0, i = 0; i < n; i++)
x += bn(p, s);
return(x);
}
bn.c文件參見貝努力分布的隨機數