| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | /* 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 voidlran2_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;}	static long lran2(struct lran2_st* d){	long 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 /* _LRAN2_H */
 |