From: Chris Torek Date: Wed, 24 Jun 1992 16:08:54 +0000 (-0800) Subject: date and time created 92/06/24 01:08:54 by torek X-Git-Tag: BSD-4_4-Snapshot-Development~6477 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/a4681977c1301612ed75f7f63095e8431bfbf5b7 date and time created 92/06/24 01:08:54 by torek SCCS-vsn: sys/libkern/random.c 7.1 --- diff --git a/usr/src/sys/libkern/random.c b/usr/src/sys/libkern/random.c new file mode 100644 index 0000000000..6c25d70ff6 --- /dev/null +++ b/usr/src/sys/libkern/random.c @@ -0,0 +1,37 @@ +/*- + * Copyright (c) 1992 The Regents of the University of California. + * All rights reserved. + * + * %sccs.include.redist.c% + * + * @(#)random.c 7.1 (Berkeley) %G% + */ + +#include "libkern.h" + +/* + * 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]. + */ +u_long +random() +{ + static u_long randseed = 1; + 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. + */ + x = randseed; + hi = x / 127773; + lo = x % 127773; + t = 16807 * lo - 2836 * hi; + if (t <= 0) + t += 0x7fffffff; + randseed = t; + return (t); +}