/** * Tiny Mersenne Twister */ #ifndef TINYMT_RAND_H_ #define TINYMT_RAND_H_ /** * tinymt32 internal state vector and parameters */ typedef struct { uint32_t status[4]; uint32_t mat1; uint32_t mat2; uint32_t tmat; } tinymt32_t; extern tinymt32_t tinymt32_s; void tinymt32_init(tinymt32_t *s, uint32_t seed); uint32_t tinymt32_get_uint32(tinymt32_t* s); #define prng_get8() (tinymt32_get_uint32(&tinymt32_s) & 0xff) #define prng_get16() (tinymt32_get_uint32(&tinymt32_s) & 0xffff) #define prng_get32() tinymt32_get_uint32(&tinymt32_s) uint16_t prng_scale16(uint16_t min, uint16_t max); #endif /* TINYMT_RAND_H */