A slightly faster version eliminates the increment, reducing the LCG to a multiplicative (Lehmer-style) generator with a period of only 262, and uses the weaker XSH-RS output function:    static uint64_t mcg_state = 0xcafef00dd15ea5e5u; // Must be odd  uint32_t pcg32_fast(void)  void pcg32_fast_init(uint64_t seed)   The time saving is minimal, as the most expensive operation (the 64×64-bit multiply) remains, so the normal version is preferred except "in extremis". Still, this faster version also passes statistical tests. When executing on a 32-bit processor, the 64×64-bit multiply must be implemented using three 32×32→64-bit multiply operations. To reduce that to two, there are 32-bit multipliers which perform almost as well as the 64-bit one, such as 0xf13283ad, or 0xf2fc5985. PCG was developed by applying TestU01 to reduced-size variants, and determining the minimum number of internal state bits required to pass BigCrush. BigCrush examines enough data to detect a period of 235, so even an ideal generator requires 36 bits of state to pass it. Some very poor generators can pass if given a large enough state; passing despite a "small" state is a measure of an algorithm's quality, and shows how large a safety margin exists between that lower limit and the state size used in practical applications. PCG-RXS-M-XS (with 32-bit output) passes BigCrush with 36 bits of state (the minimum possible), PCG-XSH-RR (codice_8 above) requires 39, and PCG-XSH-RS (codice_9 above) requires 49 bits of state. For comparison, xorshift*, one of the best of the alternatives, requires 40 bits of state, and Mersenne twister fails despite 19937 bits of state.