均勻分布的隨機數


一、功能

產生(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);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM