/* Reference Code of a Random Number Generator LCG (Linear Congruential Generator): an example of 32-bit LCG modulo a power of 2 from the following site. https://en.wikipedia.org/wiki/Linear_congruential_generator */ #define SEED 19660809u /* examples of (A, B, X): (22695477, 1, 2^32), (1664525, 1013904223, 2^32) */ #define A 22695477u #define B 1u #define X 4294967296u /* a divider is required for other X than a power of 2 */ static unsigned int n = SEED; void random_generator_reference_init(unsigned int s){ n = s; } unsigned int random_generator_reference(void){ n = (n * A + B) % X; return n; }