ran3.c

来自「适合大型数值计算代码 现在网络上已经找不到了 购买需要20$」· C语言 代码 · 共 48 行

C
48
字号
#define MBIG 1000000000#define MSEED 161803398#define MZ 0#define FAC (1.0/MBIG)float ran3(long *idum){	static int inext,inextp;	static long ma[56];	static int iff=0;	long mj,mk;	int i,ii,k;	if (*idum < 0 || iff == 0) {		iff=1;		mj=MSEED-(*idum < 0 ? -*idum : *idum);		mj %= MBIG;		ma[55]=mj;		mk=1;		for (i=1;i<=54;i++) {			ii=(21*i) % 55;			ma[ii]=mk;			mk=mj-mk;			if (mk < MZ) mk += MBIG;			mj=ma[ii];		}		for (k=1;k<=4;k++)			for (i=1;i<=55;i++) {				ma[i] -= ma[1+(i+30) % 55];				if (ma[i] < MZ) ma[i] += MBIG;			}		inext=0;		inextp=31;		*idum=1;	}	if (++inext == 56) inext=1;	if (++inextp == 56) inextp=1;	mj=ma[inext]-ma[inextp];	if (mj < MZ) mj += MBIG;	ma[inext]=mj;	return mj*FAC;}#undef MBIG#undef MSEED#undef MZ#undef FAC

⌨️ 快捷键说明

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