キャリー付き乗算
の数列を持ち、x の出力列(右のレジスタ)の周期は22となる。
1 , 0 , 1 , 7 , 9 , 7 , 5 , 0 , 4 , 8 , 8 , 1 , 3 , 2 , 6 , 3 , 5 , 7 , 2 , 9 , 4 , 4 , 1 , 0 , 1 , 7 , 9 , 7 , 5 , 0 , . . . {\displaystyle 1,0,1,7,9,7,5,0,4,8,8,1,3,2,6,3,5,7,2,9,4,4,\,1,0,1,7,9,7,5,0,...}
x の繰り返し部分を逆順にすると
449275 ⋯ 97101 449275 ⋯ 9710144 ⋯ {\displaystyle 449275\cdots 97101\,449275\cdots 9710144\cdots }
となり、これは a=7, b=10, j=31 とした時の j/(ab−1) の値
31 69 = .4492753623188405797101 4492753623 ... {\displaystyle {\frac {31}{69}}=.4492753623188405797101\,4492753623\ldots }
の小数部と一致する点に注目したい。
これは一般的にもなりたち、lag-r MWC により生成された x の列
lag-r MWC の周期を決めるのは、通常 p=ab − 1 が素数となる乗数 a の選び方である。もし p が安全素数なら、b の位数は p − 1 か (p − 1)/2 となる。ただ、b mod p の位数を求めるには p − 1 を因数分解する必要があるだろうが、これを因数分解するのは難しいだろう。
しかし、p = ab + 1 の形の素数であれば、p − 1 = ab は簡単に因数分解できる。そのため、p = ab + 1 を素数とする場合の b によって規定される MWC を使えば、MWC の周期を求めるのに必要な計算数論は著しく簡単になるだろう。
幸いな事に、MWC を少し変更するだけで、ab + 1 の形の素数を作る事ができる。これを相補的なキャリー付き乗算(CMWC)と呼ぶ。
必要な入力は lag-r MWC と同じで、乗数 a と 基数 b、そして r + 1 個の乱数種
x0, x1, x2, ..., xr−1, cr − 1
である。新しいペア x, c を生成する方法は、以下のように少し変更される。