二項分佈的隨機數

1、功能

產生二項式分佈的隨機數。html

2、方法簡介

二項式分佈的機率密度函數爲
\[ 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\)的具體算法以下:函數

  1. 產生IID貝努利分佈的隨機數\(y_1,y_2,...,y_n\),即\(y_i \sim BN(p)\)
  2. 計算\(x=\sum_{i=1}^{m}y_{i}\)

3、使用說明

是用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

相關文章
相關標籤/搜索