- uint32_t a = 1103515245; // Values for a and b as recommended by POSIX.1-2001 (see man page rand(3)).
- uint16_t b = 12345;
- uint32_t mod = 2147483648;
- seed = ((seed * a) + b) % mod;
- return (seed / 65536); } // Ignore least significant 16 bits (they are less random).
+ static uint32_t seed = 0;
+ seed = ((seed * 1103515245) + 12345) % 2147483648; // Values as recommended by POSIX.1-2001 (see rand(3)).
+ return (seed / 65536); } // Ignore least significant 16 bits (they are less random).