Note that when StateUInt is the same size as OutputUInt the two lowest bits
of this generator are
LFSRs, and thus will fail binary rank tests.
To provide some context, every bit of a Mersenne Twister generator
(either the 32-bit or 64-bit variant) is an LFSR.
The rand!T functions in mir.random automatically will discard
the low bits when generating output smaller than OutputUInt due to
this generator having preferHighBits defined true.
structXorshiftStarEngine(StateUInt, uint nbits, int sa, int sb, int sc, StateUInt multiplier, OutputUInt = StateUInt)
Note that when StateUInt is the same size as OutputUInt the two lowest bits of this generator are LFSRs, and thus will fail binary rank tests. To provide some context, every bit of a Mersenne Twister generator (either the 32-bit or 64-bit variant) is an LFSR.
The rand!T functions in mir.random automatically will discard the low bits when generating output smaller than OutputUInt due to this generator having preferHighBits defined true.