ran2.cpp

来自「工程算法 这是一个很有用的工程数值算法集锦」· C++ 代码 · 共 32 行

CPP
32
字号
static double ran2(int& idum)
{
	static int iy,iff,ir[97];
	double rm,ran;
    int j,m,ic,ia;
    m = 714025; ia = 1366; ic = 150889; 
    if (idum < 0 || iff == 0) 
	{
        iff = 1;
        idum = (ic - idum) % m;
        for( j = 1; j<=97; j++)
		{
            idum = (ia*idum + ic) % m;
            ir[j] = idum;
        }
        idum = (ia * idum + ic) % m;
        iy = idum;
    }
    j = 1 + int((97 * iy) / m);
    if(j > 97 || j < 1)
    {
		cout<<"abnormal exit"; 
		exit(1);
	}
    rm = 0.0000014005112;
    iy = ir[j];
    ran = iy * rm;
    idum = (ia * idum + ic) % m;
    ir[j] = idum;
	return ran;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?