home *** CD-ROM | disk | FTP | other *** search
- #ifdef __STDC__
- static char sccs_id[] = "@(#) rand.c 1.1 " __DATE__ " HJR";
- #else
- static char sccs_id[] = "@(#) rand.c 1.1 26/9/90 HJR";
- #endif
-
- /* rand.c (c) Copyright 1990 H.Rogers */
-
- #include <stdlib.h>
-
- static unsigned long __state[32] =
- {
- 0x6fdb9cb7, 0x9de8dc3d, 0x093bf9e4, 0x47528c2b, 0xfc263867, 0x53cbf1bf,
- 0x13618c92, 0x9e0f31b1, 0xcd651ab0, 0x2b52a7e5, 0x2ccdd9bf, 0x30052e2e,
- 0xb278be81, 0xd634a58b, 0x0a33d2c1, 0xfd42f052, 0xcb2f06f8, 0xa57bb730,
- 0x4ca963ac, 0x84bf5532, 0xd67ab9e6, 0x6e2d017b, 0x1e17cd99, 0x5891173a,
- 0x39384a29, 0xe0a0282e, 0x2e5512fc, 0x3093f269, 0x3a6983e6, 0x6b9fdaf3,
- 0x38b6bbd1, 0xb5e23046
- };
- static int __st1 = 0, __st2 = 3;
-
- #ifdef __STDC__
- void
- srand (register long seed)
- #else
- void
- srand (seed)
- register long seed;
- #endif
- {
- register int i;
-
- for (i = 0; i < 32; i++)
- seed = __state[i] = (seed * 1103515245 + 12345);
- __st1 = 0;
- __st2 = 3;
- for (i = 0; i < ((lrand () ^ seed) & 255); i++);
- for (i = 0; i < ((lrand () ^ seed) & 255); i++)
- lrand ();
- }
-
- #ifdef __STDC__
- long
- lrand (void)
- #else
- long
- lrand ()
- #endif
- {
- register long i, j;
- register int k, l;
-
- i = *((long *) (__state + (k = __st1)));
- j = *((long *) (__state + (l = __st2)));
- if (i < 0 && j < 0)
- i = -i;
- __state[l] = (i += j);
- __st1 = (k + 1) & 31;
- __st2 = (l + 1) & 31;
- return ((i >> 1) & RAND_MAX);
- }
- #ifdef __STDC__
- int (rand) (void)
- #else
- int (rand) ()
- #endif
- {
- return (rand ());
- }
-
- #ifdef __STDC__
- void (srand48) (register long seed)
- #else
- void (srand48) (seed)
- register long seed;
- #endif
- {
- srand48 (seed);
- }
- #ifdef __STDC__
- long (lrand48) (void)
- #else
- long (lrand48) ()
- #endif
- {
- return (lrand48 ());
- }
- #ifdef __STDC__
- void (srandom) (register long seed)
- #else
- void (srandom) (seed)
- register long seed;
- #endif
- {
- srandom (seed);
- }
- #ifdef __STDC__
- long (random) (void)
- #else
- long (random) ()
- #endif
- {
- return (random ());
- }
-