产生二项式分布的随机数。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