22 #ifdef HAVE_GETTIMEOFDAY
28 #include <sys/types.h>
36 static const uint32 a0 = 0xE66D;
37 static const uint32 a1 = 0xDEEC;
38 static const uint32 a2 = 0x5;
40 static const uint32 b0 = 0xB;
44 #define LO(x) ((x) & 0xFFFFU)
45 #define HI(x) ((x) >> 16)
75 char *grass_random_seed = getenv(
"GRASS_RANDOM_SEED");
77 if (!grass_random_seed)
78 grass_random_seed = getenv(
"SOURCE_DATE_EPOCH");
79 if (grass_random_seed) {
80 seed = strtoull(grass_random_seed,
NULL, 10);
83 seed = (
unsigned long)getpid();
85 #ifdef HAVE_GETTIMEOFDAY
89 if (gettimeofday(&tv,
NULL) < 0)
91 seed += (
unsigned long)tv.tv_sec;
92 seed += (
unsigned long)tv.tv_usec;
96 time_t
t = time(
NULL);
98 seed += (
unsigned long)
t;
107 static void G__next(
void)
176 r /= 281474976710656.0;
void void void void G_fatal_error(const char *,...) __attribute__((format(printf
long G_mrand48(void)
Generate an integer in the range [-2^31, 2^31)
long G_lrand48(void)
Generate an integer in the range [0, 2^31)
long G_srand48_auto(void)
Seed the pseudo-random number generator from the time and PID.
void G_srand48(long seedval)
Seed the pseudo-random number generator.
double G_drand48(void)
Generate a floating-point value in the range [0,1)