一、功能
產生(a, b)區間上均勻分布的隨機數。
二、方法簡介
均勻分布的概率密度函數為
\[f(x)=\left\{\begin{matrix} \frac{1}{b-a} & ,a\leq x\leq b\\ 0 & ,others \end{matrix}\right. \]
通常用\(u(a, b)\)表示。均勻分布的均值為\(\frac{a+b}{2}\),方差為\(\frac{(a-b)^{2}}{12}\)。
產生均勻分布隨機數的方法如下:
首先,由給定的初值\(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}\)
三、使用說明
生成(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);
}