⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rg_rand.c

📁 由3926个源代码
💻 C
字号:
/*
**  random.c -- "Minimal Standard" integer random number generator
**
**  based on "Random Number Generators: Good Ones Are Hard to Find",
**  S.K. Park and K.W. Miller, Communications of the ACM 31:10 (Oct 1988).
**
**  linear congruential generator f(z) = 16807 z mod (2 ** 31 - 1)
**
**  uses L. Schrage's method to avoid overflow problems
**
**  adapted for C by R. Gardner, public domain
*/

static long int z = 1;

#define a 16807
#define m 2147483647                                  /* 2 ** 31 - 1 */
#define q (m / a)
#define r (m % a)

long random (void)                  /* returns number in [1 .. 2147483646] */
{
      long int lo, hi, test;

      hi = z / q;
      lo = z % q;
      test = a * lo - r * hi;
      if (test > 0)
            z = test;
      else  z = test + m;
      return z;
}

void srandom(unsigned int seed)                       /* set the seed */
{
      if (seed == 0)
            seed = 1;
      z = seed;
}

⌨️ 快捷键说明

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