Permuted congruential generator
これも入力の半分の長さの出力になる。 2 b {\displaystyle 2^{b}} ビットの入力の最上位の b − 3 {\displaystyle b-3} ビットによりシフト量が決定され、すぐ下の 2 b − 1 + 2 b − 3 − 1 {\displaystyle 2^{b-1}+2^{b-3}-1} ビットに適用され、その中の下位 2 b − 1 {\displaystyle 2^{b-1}} ビットが出力される。残りの下位 2 b − 1 − 2 b − 3 − ( b − 4 ) {\displaystyle 2^{b-1}-2^{b-3}-(b-4)} ビットは捨てられる。
XSH: Xorshiftの操作 (x ^= x >> (定数))。定数は次の操作で捨てられないビットの半分(端数切り捨て)となるようにする。
XSL: XSHの (定数) の部分を全体の長さの半分にしたもの。
RXS: XSHの (定数) の部分をランダムな(入力に依存する)量にしたもの。
M: 定数の乗算。
以下に挙げるものは推奨される組み合わせである。擬似コードも示す。
XSH-RR: xorshiftで上位のビットを下位のビットに混ぜ、ビット 63-59 で回転量を決定しビット 27-58 に適用する。