37 const unsigned char *p = (
unsigned char *) &now;
39 for (
size_t i = 0; i <
sizeof(now); ++i) {
40 seed = (seed * (UCHAR_MAX + 2U)) + p[i];
42 dsfmt_gv_init_gen_rand(seed);
52 dsfmt_gv_init_gen_rand(seed);
64 return min + (dsfmt_gv_genrand_open_open() * (max - min));
89 static const double two_pi = 2 * M_PI;
94 return z1 * sigma + mu;
96 const double u1 = dsfmt_gv_genrand_open_open();
97 const double u2 = dsfmt_gv_genrand_open_open();
98 const double z0 = sqrt(-2 * log(u1)) * cos(two_pi * u2);
99 z1 = sqrt(-2 * log(u1)) * sin(two_pi * u2);
100 return z0 * sigma + mu;
112 printf(
"Error reading JSON\n");
113 const char *error_ptr = cJSON_GetErrorPtr();
114 if (error_ptr != NULL) {
115 printf(
"Error before: %s\n", error_ptr);
int rand_uniform_int(const int min, const int max)
Returns a uniform random integer [min,max] not inclusive of max.
double rand_normal(const double mu, const double sigma)
Returns a random Gaussian with specified mean and standard deviation.
double rand_uniform(const double min, const double max)
Returns a uniform random float [min,max].
void rand_init(void)
Initialises the pseudo-random number generator.
void utils_json_parse_check(const cJSON *json)
Checks whether JSON parsed correctly.
void rand_init_seed(const uint32_t seed)
Initialises the pseudo-random number generator with a fixed seed.
Utility functions for random number handling, etc.