randlcg.c

来自「Nistnet网络仿真软件」· C语言 代码 · 共 54 行

C
54
字号
/* rndlcg            Linear Congruential Method, the "minimal standard generator"                     Park & Miller, 1988, Comm of the ACM, 31(10), pp. 1192-1201*/static char rcsid[] = "@(#)randlcg.c	1.1 15:48:15 11/21/94   EFC";#include <math.h>#include <limits.h>#define ALL_BITS     0xffffffffstatic long int quotient  = LONG_MAX / 16807L;static long int remainder = LONG_MAX % 16807L;static long int seed_val = 1L;long set_seed(long int sd){        return seed_val = sd;}long get_seed(){        return seed_val;}unsigned long int randlcg()       /* returns a random unsigned integer */{        if ( seed_val <= quotient )                seed_val = (seed_val * 16807L) % LONG_MAX;        else        {                long int high_part = seed_val / quotient;                long int low_part  = seed_val % quotient;                long int test = 16807L * low_part - remainder * high_part;                if ( test > 0 )                        seed_val = test;                else                        seed_val = test + LONG_MAX;        }        return seed_val;}

⌨️ 快捷键说明

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