產生二項式分佈的隨機數。html
二項式分佈的機率密度函數爲
\[ 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\)的具體算法以下:函數
是用C語言實現產生二項分佈隨機數的方法以下:spa
/************************************ 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文件參見貝努力分佈的隨機數code