一、功能

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

版权声明:本文为liam-ji原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liam-ji/p/11623024.html