roo_e/thirdparty/grx249/test/rand.h
2022-05-16 17:59:47 -05:00

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