- static time_t t;
-
- rng = xmalloc (sizeof *rng);
- if (t == 0)
- time (&t);
- else
- t++;
- rng_seed (rng, &t, sizeof t);
- rng->next_normal = NOT_DOUBLE;
- return rng;
- }
+ static unsigned long seed=0;
+ unsigned long s;
+
+ rng = xmalloc (sizeof *rng);
+
+
+ if ( seed_is_set(&s) )
+ {
+ seed = s;
+ }
+ else if ( seed == 0 )
+ {
+ seed = random_seed();
+ }
+ assert(seed);
+ /*
+ if (t == 0 || set_seed_used)
+ {
+ if (set_seed == NOT_LONG)
+ time (&t);
+ else
+ t = set_seed;
+ set_seed_used=0;
+ }
+ else
+ t++;
+ */
+ rng_seed (rng, &seed, sizeof seed);
+ rng->next_normal = NOT_DOUBLE;
+ return rng;
+}