Q:Rand和Randg的算法,如何得到随机数
A:
天软中的rand函数是VC的一个内置函数,randg的算法是:
function RandG(Mean, StdDev: Extended): Extended;
{ Marsaglia-Bray algorithm }
var
U1, S2: Extended;
begin
repeat
U1 := 2*Random - 1;
S2 := Sqr(U1) + Sqr(2*Random-1);
until S2 < 1;
Result := Sqrt(-2*Ln(S2)/S2) * U1 * StdDev + Mean;
end;
说明:上述代码为C语言底层代码。
random的算法是用当前CPU的运行周期数作为随机种子,产生的伪随机序列,在每次RAND调用之前都会使用当前时间作为随机种子。