产生(a, b)区间上均匀分布的随机数。函数
均匀分布的几率密度函数为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
生成(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); }