FreeBSD/sys/libkern/random.c
/*
 * Pseudo-random number generator for perturbing the profiling clock,
 * and whatever else we might use it for.  The result is uniform on
 * [0, 2^31 - 1].
 */
Pseudo-random number generator for perturbing the profiling clock,
and whatever else we might use it for.
Pseudo - random number generator for perturbing the profiling clock and whatever else we might use it for .
u_long
random()
{
	register long x, hi, lo, t;
	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);
}
u_long random ( ) { register long x , hi , lo , t ; 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 ) ; }
Pseudo-random number generator for perturbing the profiling clock,
 and whatever else we might use it for.
Pseudo - random number generator for perturbing the profiling clock and whatever else we might use it for .
/*
	 * 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. */