blob: c7bae4e5c33ae7ac86e4e698ab69f192a5edeb63 (
plain) (
tree)
|
|
#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
|