#ifndef UC_MERSENNE_TWISTER_H #define UC_MERSENNE_TWISTER_H #ifdef __cplusplus extern "C" { #endif #define MT_RAND_N 624 /** Context used for the PRNG*/ typedef struct { unsigned int x[MT_RAND_N]; int i; } MTRand; /** Initialize a Mersenne Twister PRNG context. * @param seed Starter seed for the PRNG * @param r context for the PRNG */ void mtsrand(int seed, MTRand *r); /** Generate a new random number. * Generated range is 0 to UINT_MAX * * @param r context for the PRNG * @return A pseudo random number */ unsigned int mtrand(MTRand *r); #ifdef __cplusplus } #endif #endif