This is random.c in view mode; [Download] [Up]
/*
* Because the standard library random number
* functions are not availble at the kernel level
* I wrote this simple random number generator.
*
* It uses the multiplicative congruential method.
* See pg 263 of Banks and Carson "Discrete-Event
* System Simulation".
*
*/
#include "random.h"
static unsigned x0=123457; /* seed */
static unsigned a=16807; /* constant multiplier */
static unsigned c=0; /* increment */
static unsigned m=2147483647; /* modulus */
/*
* Set the seed to the argument.
*/
void srand(unsigned i)
{
x0 = i;
}
/*
* Use Linear Congruential Method to Generate
* sequence. Return either int or float...
*/
unsigned rand(void)
{
unsigned tmpseed;
tmpseed = (a*x0+c) % m;
x0 = tmpseed;
return (unsigned) x0;
}
float frand(void)
{
unsigned tmpseed;
tmpseed = (a*x0+c) % m;
x0 = tmpseed;
return (x0/(float)m);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.