#pragma once /** * @def RNG(L,H) * * @brief Get a random number between L and H (L <= RNG <= H). * * If L is bigger than H it inverts the roles. */ #define RNG(L,H) (((L)>(H)) ? RNG_SANE((H), (L)) : RNG_SANE((L),(H))) /** * @def RNG_SANE(L,H) * * @brief Get a number between L and H (L <= RNG <= H). * * Result unspecified if L is bigger than H. */ #define RNG_SANE(L,H) ((int)L + (int)((double)(H-L+1) * randfp())) /* L <= RNG <= H */ /** * @def RNGF() * * @brief Get a random float between 0 and 1 (0. <= RNGF <= 1.). */ #define RNGF() (randfp()) /* 0. <= RNGF <= 1. */ /* Init. */ void rng_init(void); /* Random functions. */ unsigned int randint(void); double randfp(void); /* Probability functions. */ double Normal(double x); double NormalInverse(double p);