1b830beddb
This includes updates to the malloc_hook method and making everything components. This commit was SVN r6852.
52 строки
837 B
C
52 строки
837 B
C
/* lran2.h
|
|
* by Wolfram Gloger 1996.
|
|
*
|
|
* A small, portable pseudo-random number generator.
|
|
*/
|
|
|
|
#ifndef _LRAN2_H
|
|
#define _LRAN2_H
|
|
|
|
#define LRAN2_MAX 714025l /* constants for portable */
|
|
#define IA 1366l /* random number generator */
|
|
#define IC 150889l /* (see e.g. `Numerical Recipes') */
|
|
|
|
struct lran2_st {
|
|
long x, y, v[97];
|
|
};
|
|
|
|
static void
|
|
lran2_init(struct lran2_st* d, long seed)
|
|
{
|
|
long x;
|
|
int j;
|
|
|
|
x = (IC - seed) % LRAN2_MAX;
|
|
if(x < 0) x = -x;
|
|
for(j=0; j<97; j++) {
|
|
x = (IA*x + IC) % LRAN2_MAX;
|
|
d->v[j] = x;
|
|
}
|
|
d->x = (IA*x + IC) % LRAN2_MAX;
|
|
d->y = d->x;
|
|
}
|
|
|
|
#ifdef __GNUC__
|
|
__inline__
|
|
#endif
|
|
static long
|
|
lran2(struct lran2_st* d)
|
|
{
|
|
int j = (d->y % 97);
|
|
|
|
d->y = d->v[j];
|
|
d->x = (IA*d->x + IC) % LRAN2_MAX;
|
|
d->v[j] = d->x;
|
|
return d->y;
|
|
}
|
|
|
|
#undef IA
|
|
#undef IC
|
|
|
|
#endif
|