📄 frand.c
字号:
float frand(void);/************************************************************************//* irand(iseed) returns values 1 through 2**31-2. *//* From "Random number generators: good ones are hard to find", S. Park *//* and K. Miller, Communications of ACM, October 1988, pp 1192-1201. *//* This is from page 1195, and is to work on any system for which *//* maxint is 2**31-1 or larger. Due earlier to Schrage, as cited by P&M.*//* *//* Note: OK values for iseed are 1 through 2**31-2. Give it 0 or 2*31-1 *//* and it will return the same values thereafter! *//* *//* C version 6/91, Bruce Langdon. *//* *//* Algorithm replaces seed by mod(a*seed,m). First represent *//* seed = q*hi + lo. Then *//* a*seed = a*q*hi + lo = (m - r)*hi + a*lo = (a*lo - r*hi) + m*hi, *//* and new seed = a*lo - r*hi unless negative; if so, then add m. */float frand(void){ long a = 16807, m = 2147483647, q = 127773, r = 2836; long hi, lo; static long seed=31207321; float fnumb; hi = seed/q; lo = seed - q*hi; seed = a*lo - r*hi; /* "seed" will always be a legal integer of 32 bits (including sign). */ if(seed <= 0) seed = seed + m; fnumb = seed/2147483646.0; return(fnumb);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -