📄 ran3.cpp
字号:
static int inextp,iff,inext;
static double ma[57];
double ran3(int& idum)
{
double mk,b,fac,mj;
int i,ii,k,mbig,mz;
long mseed;
mbig = 1000000000; mseed = 161803398; mz = 0; fac = 0.000000001;
if ((idum < 0) || (iff == 0))
{
iff = 1;
mj = mseed - fabs(idum);
mj = mj - mbig * int(mj / mbig);
ma[56] = mj;
mk = 1;
for (i = 1; i<=54; i++)
{
ii = (21 * i) - 55 * int((21.0 * i)/ 55.0);
ma[ii] = mk;
mk = mj - mk;
if (mk < mz) mk = mk + mbig;
mj = ma[ii];
}
for (k = 1; k<=4; k++)
{
for (i = 1; i<=55; i++)
{
ma[i] = ma[i] - ma[1 + i + 30 - 55 * int((i + 30) / 55)];
if (ma[i] < mz) ma[i] = ma[i] + mbig;
}
}
inext = 0;
inextp = 31;
idum = 1;
}
inext = inext + 1;
if (inext == 56 ) inext = 1;
inextp = inextp + 1;
if (inextp == 56) inextp = 1;
mj = ma[inext] - ma[inextp];
if (mj < mz ) mj = mj + mbig;
ma[inext] = mj;
b = mj * fac;
return b;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -