Index: sys/libkern/random.c =================================================================== --- sys/libkern/random.c (revision 285211) +++ sys/libkern/random.c (working copy) @@ -34,45 +34,18 @@ #include -#define NSHUFF 50 /* to drop some "seed -> 1st value" linearity */ - -static u_long randseed = 937186357; /* after srandom(1), NSHUFF counted */ - void -srandom(seed) - u_long seed; +srandom(u_long seed __unused) { - int i; - - randseed = seed; - for (i = 0; i < NSHUFF; i++) - (void)random(); } /* * Pseudo-random number generator for randomizing the profiling clock, - * and whatever else we might use it for. The result is uniform on - * [0, 2^31 - 1]. + * and whatever else we might use it for. */ u_long -random() +random(void) { - register long x, hi, lo, t; - /* - * Compute x[n + 1] = (7^5 * x[n]) mod (2^31 - 1). - * From "Random number generators: good ones are hard to find", - * Park and Miller, Communications of the ACM, vol. 31, no. 10, - * October 1988, p. 1195. - */ - /* Can't be initialized with 0, so use another value. */ - if ((x = randseed) == 0) - x = 123459876; - hi = x / 127773; - lo = x % 127773; - t = 16807 * lo - 2836 * hi; - if (t < 0) - t += 0x7fffffff; - randseed = t; - return (t); + return (arc4random() & 0x7fffffff); } Index: sys/sys/libkern.h =================================================================== --- sys/sys/libkern.h (revision 285211) +++ sys/sys/libkern.h (working copy) @@ -114,7 +114,7 @@ int (*compar)(void *, const void *, const void *)); u_long random(void); int scanc(u_int, const u_char *, const u_char *, int); -void srandom(u_long); +void srandom(u_long) __attribute__((__deprecated__)); int strcasecmp(const char *, const char *); char *strcat(char * __restrict, const char * __restrict); char *strchr(const char *, int);