/* * prng.h * * Created on: Aug 3, 2023 * Author: true */ #ifndef CODE_INC_PRNG_H_ #define CODE_INC_PRNG_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) #endif /* CODE_INC_PRNG_H_ */