📄 random.c
字号:
/* from http://remus.rutgers.edu/~rhoads/Code/tt800.c *//*********************************************************************** can return either a random 32-bit integer or a random float in [0 1) period = 2^800***********************************************************************/#include "baselib.h"#define N 25#define M 7static unsigned int x[N]; /* the 25 seeds */static const unsigned int mag01[2] = { 0x0, 0x8ebfd028 }; /* "magic" vector */static int ks;void srand(unsigned int seed){ int k; ks = 0; x[0] = (seed | 1); for (k = 1; k < N; k++) x[k] = (69069 * x[k - 1]);}unsigned int rand(void){ unsigned int y; int k; if (ks == N) { for (k = 0; k < N - M; k++) x[k] = x[k + M] ^ (x[k] >> 1) ^ mag01[x[k] & 1]; for (; k < N; k++) x[k] = x[k + (M - N)] ^ (x[k] >> 1) ^ mag01[x[k] & 1]; ks = 0; } y = x[ks++]; y ^= (y << 7) & 0x2b5b2500; y ^= (y << 15) & 0xdb8b0000; y ^= (y >> 16); return y;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -