読者です 読者をやめる 読者になる 読者になる

arXiv探訪

興味の赴くままに数学するだけ

疑似乱数について その1 線型合同法の最大周期条件

その0

用語と例

少し用語を整理しよう。線型合同法により生成される疑似乱数列は、組{ (a, c, m, x_{0}) }が与えられたとき漸化式{ x_{n+1}\equiv ax_{n}+c\pmod{m} }で定められる。({ a, c, m, x_{0} }は整数かつ{ m\gt 1, 0\le a, c, x_{0}\lt m }を満たす。*1{ x_{n} }が取る状態の数は有限なので、必ずどこかで軌道が交わる。つまりある{ n, \lambda }が存在して{ x_{n+\lambda}\equiv x_{n} }が成り立つ。このとき{ k\ge n }なら{ x_{k+\lambda}\equiv x_{k} }が常に成り立ち周期的になる。そこで{ \lambda }を組{ (a, c, m, x_{0}) }の周期(period)と呼び、特に{ n=0 }としてよいとき巡回的(cyclic)と呼ぶ。疑似乱数としての役割を考えれば周期は長ければ長い方が良い。一般に周期{ m }を取る組は、初期値を変えてもその周期は変わらない。このようなとき組{ (a, c, m) }を理想的な組と呼ぶことにする。

例えば{ x_{n+1}\equiv 7x_{n}+5\pmod{18} }を考えると、

{ 0, 5, 4, 15, 2, 1, 12, 17, 16, 9, 14, 13, 6, 11, 10, 3, 8, 7, 0 }

という列を生成する。これは巡回的かつ周期は{ 18 }であるから{ m }に等しい。従って{ (7, 5, 18) }は理想的な組となる。注目すべきはその並びであり、一見しただけではその法則が分からないので疑似的な乱数と思える。疑似乱数として使うときは普通全体を{ m=18 }で割る。

次は{ x_{n+1}\equiv 4x_{n}+5\pmod{6} }を考えよう。生成される列は

{ \begin{align*} 5, 1, 3, 5 \\ 0, 5 \\ 2, 1 \\ 4, 3  \end{align*} }

となる。上は巡回的だが、{ x_{0}=0, 2, 4 }のときは巡回的ではない。もちろん理想的ではない。

周期が複数ある場合も存在する。{ x_{n+1}\equiv 7x_{n}+15\pmod{18} }が生成する列は

{ \begin{align*} 0, 15, 12, 9, 6, 3, 0 \\ 1, 4, 7, 10, 13, 16, 1 \\ 2, 11, 2 \\ 5, 14, 5 \\ 8, 17, 8 \end{align*} }

となる。それぞれは巡回的だが、周期は短く数の並びも予測し易い。

最大周期条件

{ (a, c, m) }が理想的となる条件(最大周期条件)を求めたい。そのためには周期を直接求めるのではなく、まず部分的な場合に帰着させることを考える。

補題 { (a, c, m, x_{0}) }が生成する列は巡回的で、周期は{ \lambda }とする。{ m=p_{1}^{e_{1}}\dotsm p_{t}^{e_{t}} }素因数分解としよう。各{ p_{i}^{e_{i}} }への剰余で与えられる組{ (\overline{a}, \overline{c}, p_{i}^{e_{i}}, \overline{x_{0}} }が生成する列(剰余列と呼ぶことにする)も巡回的で、周期は{ \lambda_{i} }とする。このとき{ \lambda }{ \lambda_{1}, \dotsc, \lambda_{t} }の最小公倍数となる。

(証明){ m_{1}, m_{2} }は互いに素として、{ (a, c, m_{1}m_{2}, x_{0}) }が生成する列を{ x_{n} }{ m_{1}, m_{2} }への剰余で得られる組が生成する列をそれぞれ{ y_{n}, z_{n} }とする。何れも巡回的で、周期は{ \lambda, \lambda_{1}, \lambda_{2} }とする。このとき{ \lambda }{ \lambda_{1}, \lambda_{2} }の最小公倍数であることを示せば良い。

まず{ y_{0}=\overline{x_{0}}\equiv x_{0}\pmod{m_{1}} }であり、帰納的に

{ y_{n+1}\equiv \overline{a}y_{n}+\overline{c}=\overline{a}\overline{x_{n}}+\overline{c}=\overline{ax_{n}+c}=\overline{x_{n+1}}\pmod{m_{1}} }

となるので{ y_{n}\equiv x_{n}\pmod{m_{1}} }となる。同様に{ z_{n}\equiv x_{n}\pmod{m_{2}} }を得る。それぞれの生成列が巡回的であることと、{ m_{1}, m_{2} }が互いに素であることから{ x_{t}\equiv x_{s} }{ y_{t}\equiv y_{s}, z_{t}\equiv z_{s} }は同値になる。従って{ \lambda_{1}, \lambda_{2} }の最小公倍数を{ \lambda^{\prime} }と置けば、{ x_{n}=x_{n+\lambda} }より{ y_{n}=y_{n+\lambda}, z_{n}=z_{n+\lambda} }を得るので{ \lambda\ge\lambda^{\prime} }が言える。一方{ y_{n}=y_{n+\lambda^{\prime}}, z_{n}=z_{n+\lambda^{\prime}} }より{ x_{n}=x_{n+\lambda^{\prime}} }を得るので{ \lambda\le\lambda^{\prime} }も言える。故に{ \lambda=\lambda^{\prime} }となる。{ \square }

つまり{ \lambda=m }となるためには{ \lambda=p_{i}^{e_{i}} }となる必要があり、逆もまた然りということになる。何れも巡回的という条件はあるが(外せるかもしれないけど面倒そう)、素数冪に落とせるのは都合が良い。

元の問題に戻って、巡回的となる条件を調べてみよう。つまり{ x_{n}\equiv x_{0}\pmod{m} }となる{ n }が存在する条件を考える。{ x_{n} }を計算すれば

{ \displaystyle x_{n}\equiv a^{n}x_{0}+c\sum_{j=0}^{n-1}a^{j}\equiv x_{0} \pmod{m} }

と同値になる。{ x_{0} }で括れば{ ( (a-1)x_{0}+c)\sum_{j=0}^{n-1}a^{j}\equiv 0\pmod{m} }となるが、これが適当な{ n }で成り立つときは巡回的となり、常に{ \not\equiv 0 }であるときは巡回的とならない。例えば先ほどの二番目の例({ a=4, c=5, m=6 })だと、{ \sum_{j=0}^{n-1}a^{j} }{ 1, 5, 3, 1 }を繰り返し、また{ x_{0}=0, 2, 4 }のとき{ (a-1)x_{0}+c=5 }なので積はゼロにならない。よって巡回的ではない。

得られた式は変数が多く難しいが、

{ c }{ m }と互いに素であり、{ m }の素因数で{ a-1 }が割り切れる

とき、{ (a-1)x_{0}+c }{ m }と互いに素となり、式は{ \sum_{j=0}^{n-1}a^{j}\equiv 0\pmod{m} }になる。実は次が成り立つ。

命題 { p }素数{ a-1 }{ p }で割り切れるとする。このとき

{ \displaystyle \sum_{j=0}^{p^{e}-1}a^{j}\equiv 0\pmod{p^{e}} }

が成り立つ。更に{ \sum_{j=0}^{n}a^{j}\equiv 0\pmod{p^{e}} }となる最小の{ n\gt 0 }{ \lambda }と置くとき、{ \lambda=p^{e} }であることと、{ p\gt 2 }または{ a\equiv 1\pmod{4} }であることは同値になる。

(証明)まず{ a=1 }のときは{ \sum_{j=0}^{p^{e}-1}a^{j}=p^{e}\equiv 0\pmod{p^{e}} }が成り立つ。{ a\gt 1 }とすれば、{ p|(a-1) }より{ p\not| q }及び{ f\gt 0 }を用いて{ a=1+qp^{f} }と表せる。このとき

{ \displaystyle \sum_{j=0}^{n-1}a^{j}=\frac{a^{n}-1}{a-1}=\frac{(1+qp^{f})^{n}-1}{qp^{f}}=\sum_{j=1}^{n}\frac{n!}{j!(n-j)!}(qp^{f})^{j-1} }

となる。これが{ n=p^{e} }のとき{ p^{e} }で割り切れることを示せばよい。ここで二項係数の部分は

{ \displaystyle \frac{n}{j}\left(\frac{(n-1)!}{(j-1)!( (n-1)-(j-1) )!}\right) }

であり、括弧の中身は再び二項係数、特に整数となる。問題なのは分母の{ j }だが、{ j }に現れる素因数{ p }の個数は

{ \displaystyle \frac{j}{p}+\frac{j}{p^{2}}+\dotsb\le\frac{j}{p-1} }

より少ない。つまり{ j-1 }以下となる。分子に現れる個数は{ e+f(j-1) }以上であるため、{ f\gt 0 }より{ p^{e} }を括りだせることが分かる。

{ \lambda=p^{e} }とする。{ p=2 }のとき{ a\equiv 3 \pmod{4} }とすると、{ \sum_{j=0}^{2^{e-1}-1}a^{j} }{ 3+1+3+1+\dotsb }{ 2^{e-1} }回続くのでその和は{ 4\cdot 2^{e-2}=2^{e} }となる。これは{ p^{e} }で割り切れてしまい、最小性に反する。従って{ a\equiv 1\pmod{4} }を得る。

最後に逆を示そう。{ p^{e}=q\lambda+r }と置けば

{ \displaystyle \begin{align*} \sum_{j=0}^{p^{e}-1}a^{j} &= \frac{a^{p^{e}}}{a-1} \\ &= \frac{1}{a-1}(a^{q\lambda+r}-a^{(q-1)\lambda+r}+a^{(q-1)\lambda+r}-a^{(q-2)\lambda+r}+\dotsb \\ & \dotsb +a^{\lambda+r}-a^{r}+a^{r}-1) \\ &= a^{(q-1)\lambda+r}\frac{a^{\lambda}-1}{a-1}+\dotsb+a^{r}\frac{a^{\lambda}-1}{a-1}+\frac{a^{r}-1}{a-1} \\ &\equiv \frac{a^{r}-1}{a-1}\equiv 0\pmod{p^{e}} \end{align*} }

を得る。最小性から{ r=0 }が従うので{ \lambda | p^{e} }となる。つまり{ \lambda }{ p }の冪であることが分かる。同様な方法で{ \lambda }より大きい{ p }冪の{ n }なら常に{ \sum_{j=0}^{n-1}a^{j}\equiv 0\pmod{p^{e}} }となるので、結局{ n=p^{e-1} }のときゼロにならないことを示せば十分である。

先ほどと同じように{ a=1+qp^{f} }と置いて計算すると、第一項目({ j=1 })は{ p^{e-1} }となり{ p^{e} }で割り切れない。そこで第二項目以降({ j\ge 2 })が{ p^{e} }で割り切れることを示せば良い。{ p\gt 2 }のときは{ \frac{j}{p-1}\le p-2 }なので一つ余分に括りだせる。{ p=2 }のときは{ f\gt 1 }であることが必要となるが、仮定より{ a\equiv 1\pmod{4} }だから条件を満たす。{ \square }

議論が込み入ってきたが準備はこれで整った。線型合同法における理想的な組は次で特徴付けられる。

定理 { (a, c, m) }が理想的であることと、以下の三条件を満たすことは同値である。

  • { c }{ m }は互いに素である。
  • { m }の素因数{ p }{ a-1 }を割り切る。
  • { 4|m }のとき{ 4|(a-1) }である。

(証明)三条件を満たすとする。初期値{ x_{0} }を取り列{ x_{n} }を作る。まずはこれが巡回的であることを示そう。条件より{ \sum_{j=0}^{n}a^{j}\equiv 0\pmod{m} }となる{ n }が存在すればよい。{ m=p_{1}^{e_{1}}\dotsm p_{t}^{e_{t}} }とする。まず条件より{ \sum_{j=0}^{n_{i}}a^{j}\equiv 0\pmod{p_{i}^{e_{i}}} }となる{ n_{i} }が存在する。(剰余列は巡回的である。){ n:=n_{1}\dotsm n_{t} }と置けば良い。従って{ (a, c, m, x_{0}) }が生成する疑似乱数列は巡回的である。更に周期{ \lambda }は、補題より各剰余列の周期{ \lambda_{i} }の最小公倍数となる。ここで命題より{ \lambda_{i}=p_{i}^{e_{i}} }が従うから、その最小公倍数は{ m }である。故に{ \lambda=m }を得る。つまり{ (a, c, m) }は理想的である。

逆に{ (a, c, m) }が理想的であるとしよう。{ c }{ m }が共通素因数{ p }を持つとする。{ x_{0}=0 }が生成する列を調べると、{ x_{n}\equiv 0\pmod{p} }が成り立つ。一方{ 1\not\equiv 0\pmod{p} }だから、{ x_{n} }{ 1 }を取り得ない。つまり理想的であることに反する。よって{ c }{ m }は互いに素である。次に{ p|m }だが{ a-1\not\equiv 0\pmod{p} }となる{ p }が存在すると仮定する。理想的だから剰余列も理想的であるはずだが、{ a-1 }{ p^{e} }が互いに素であることから、適当な{ v, w }が存在して{ v(a-1)+wp^{e}=1 }とできる。このとき{ x_{0}\equiv -cv \pmod{m} }を考えると、剰余列において{ (a-1)x_{0}+c=0 }が成り立つ。これは周期が{ 1 }であることを意味する。これは矛盾する。故に{ p|m }なら{ p|(a-1) }でなければならない。後は命題より{ 4|m }なら{ 4|(a-1) }も従う。{ \square }

所感

Hull-Dobellの論文は三条件を満たすなら理想的であることを証明している。上の議論の殆どはこれを参考にしたが、ギャップを少し自分で埋めた。Knuthの本はHull-Dobellの結果を整理する形で紹介しているが同値性まで主張している。でもきちんと証明されているかというと正直微妙な印象はある。(自分の頭が足りないのだろう。時間が掛かったのは修正に苦労したせい。)ちなみに{ p }{ 2 }冪の場合はHull-Dobellより早くM.GreenbergerがJACM 8(1961),383-389で証明しているらしい。興味があれば探してみても良いかもしれない。

あと別件ですが、「ざっくり学ぶ可換環論」のpdfは公開場所を変えようと思います。マイクロソフトアカウントが一時保留にされてしまい、別アカを取ったのですが再度保留になったのでいい加減面倒になりました。Docs.comに登録してない別アカは大丈夫みたいなので、恐らくですがDocs.comからのアドレス流出がある可能性が高いです。(それが迷惑メール等の偽装アドレスとして使われまくってる?)

参考文献

[1] Donald E.Knuth. The Art of Computer Programming, Second Edition, Volume 2.
[2] T.E.Hull, A.R.Dobell. Random Number Generators. SIAM Review, Vol.4, No.3, July, 1962. pp.230-254.

*1:一般論を扱うときは乗算型合同法({ c=0 })も一緒に考える。