乱数XorShift128(シードはWinAPIのGetTickCount)で、0〜7の範囲に限定して乱数を取得するとき、
何回取得しても15個単位で同じ乱数が繰り返されます。
また、「0,2,4,6」、「0,3,5,6」等、何回取得してもまったく出てこない値が発生するケースもあります。
シードがどんな値でも0〜7をなるべく偏らせず、満遍なく取得できる方法はありますでしょうか。

ちなみに、乱数取得に使用したロジックは以下です。
Result = ( int )( ( ( LONGLONG )XorShift128() * 8 ) >> 32 ) ;
Result = ( int )( ( ( LONGLONG )XorShift128() * 8 ) / 4294967296 ) ;