diff options
Diffstat (limited to 'src/common/mt_rand.hpp')
-rw-r--r-- | src/common/mt_rand.hpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/common/mt_rand.hpp b/src/common/mt_rand.hpp new file mode 100644 index 0000000..c7bae4e --- /dev/null +++ b/src/common/mt_rand.hpp @@ -0,0 +1,24 @@ +#ifndef MT_RAND_HPP +#define MT_RAND_HPP + +# include "sanity.hpp" + +/// Initialize the generator (called automatically with time() if you don't) +void mt_seed (uint32_t seed); +/// Get a random number +uint32_t mt_random (void); + +/** + * ModuloRand and ModuloPlusRand + * These macros are used to replace the vast number of calls to rand()%mod + * TODO eliminate the rest of the calls to rand() + * MRAND(10) returns 0..9 + * MPRAND(5,10) returns 5..14 + */ +// The cast is essential because the result is sometimes +// compared with a possibly negative number. +// Because it's using modulus, high numbers shouldn't happen anyway. +# define MRAND(mod) ((int)(mt_random() % (mod))) +# define MPRAND(add, mod) ((add) + MRAND(mod)) + +#endif // MT_RAND_HPP |