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 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;
- }
- 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 */
|