均勻分佈的隨機數

1、功能

產生(a, b)區間上均勻分佈的隨機數。函數

2、方法簡介

均勻分佈的機率密度函數爲spa

\[ f(x)=\left\{\begin{matrix} \frac{1}{b-a} & ,a\leq x\leq b\\ 0 & ,others \end{matrix}\right. \]code

一般用\(u(a, b)\)表示。均勻分佈的均值爲\(\frac{a+b}{2}\),方差爲\(\frac{(a-b)^{2}}{12}\)orm

產生均勻分佈隨機數的方法以下:form

首先,由給定的初值\(x_{0}\),用混合同餘法:
\[ \left\{\begin{matrix} x_{i} &=(ax_{i-1}+c)(mod \ M)\\ y_{i} &=x_{i}/M \end{matrix}\right. \]
產生(0, 1)區間上的隨機數\(y_{i}\)。其中:a=2045,c=1,\(M=2^{20}\);而後,經過變換\(z_{i}=a+(b-a)y_{i}\)產生(a,b)區間上的隨機數\(z_{i}\)class

3、使用說明

生成(a,b)區間上均勻分佈隨機數的C函數:隨機數

/************************************
    a       ---給定區間下限
    b       ---給定區間上限
    seed    ---隨機數種子
************************************/
double uniform(double a, double b, long int *seed)
{
    double t;
    *seed = 2045 * (*seed) + 1;
    *seed = *seed - (*seed / 1048576);
    t = (*seed) / 1048576.0;
    t = a + (b - a) * t;
    return(t);
}
相關文章
相關標籤/搜索