44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/**
|
|
** rand.h ---- a very simple random number generator
|
|
** (from "Numerical recipies")
|
|
**
|
|
** This is a test/demo file of the GRX graphics library.
|
|
** You can use GRX test/demo files as you want.
|
|
**
|
|
** The GRX graphics library is free software; you can redistribute it
|
|
** and/or modify it under some conditions; see the "copying.grx" file
|
|
** for details.
|
|
**
|
|
** This library is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
**
|
|
**/
|
|
|
|
#ifndef __RAND_H_INCLUDED
|
|
#define __RAND_H_INCLUDED
|
|
|
|
#define _IA 16807
|
|
#define _IM 2147483647L
|
|
#define _IQ 127773L
|
|
#define _IR 2836
|
|
#define _MASK 123459876UL
|
|
|
|
static long _idum = 0;
|
|
|
|
unsigned long ran0(void) {
|
|
long k;
|
|
_idum ^= _MASK;
|
|
k = _idum / _IQ;
|
|
_idum = _IA * (_idum - k * _IQ) - _IR * k;
|
|
if (_idum < 0) _idum += _IM;
|
|
return (unsigned long) _idum;
|
|
}
|
|
|
|
#define sran0(x) do _idum = (x); while(0)
|
|
|
|
#define RND() ran0()
|
|
#define SRND(x) sran0(x)
|
|
#define RND_MAX (_MASK)
|
|
|
|
#endif
|