キャリー付き乗算
線形合同法は通常以下で定義される。
x n = a x n − 1 + c mod 2 32 {\displaystyle x_{n}=ax_{n-1}+c\ {\bmod {\,}}2^{32}}
ほとんどの演算プロセッサでは乗数 a と現在の x は32ビットレジスタに置け、積は64ビットの連結レジスタ上に求められる。積の下位32ビット、すなわち
a × x mod 2 32 {\displaystyle a\times x\ {\bmod {\,}}2^{32}}
は、右側のレジスタを参照するだけで得られる。同様に、これに32ビットの c を足してやれば自然に ax+c mod 2 が求まる。もし a mod 8 が 1 か 5 で c が奇数なら、2 を法とする合同数列の周期は 2 となる。
一方 lag-1 MWC は、線形合同法とほぼ同じ演算を使うだけで約 2 の周期を実現する。違うのは、MWC では64ビット積の上半分も利用している点である。これは 次の キャリー c として使われる。一方、線形合同法では c は固定値である。ax+c を64ビット値として求め、上半分を次の c として使い、下半分を x として使う訳である。
乗数 a が与えられれば、x, c のペアを入力として、新たなペアが作成される。