FAQ > 金融建模 > 建模问题 > 数组操作

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调用之前都会使用当前时间作为随机种子。