一、功能
产生(a, b)区间上均匀分布的随机数。
二、方法简介
均匀分布的概率密度函数为
[f(x)=left{egin{matrix}
frac{1}{b-a} & ,aleq xleq b\
0 & ,others
end{matrix}
ight.
]
通常用(u(a, b))表示。均匀分布的均值为(frac{a+b}{2}),方差为(frac{(a-b)^{2}}{12})。
产生均匀分布随机数的方法如下:
首先,由给定的初值(x_{0}),用混合同余法:
[left{egin{matrix}
x_{i} &=(ax_{i-1}+c)(mod M)\
y_{i} &=x_{i}/M
end{matrix}
ight.
]
产生(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);
}