arXiv探訪

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

誕生日パラドックスと復元抽出の怖さ

今回は久しぶりにarXivを探訪したので次の論文を紹介する。

Boaz Tsaban. Bernoulli Numbers and the Probability of a Birthday Surprise. arXiv:math/0304028v4 [math.NA] 17 May 2007.

タイトルにあるBirthday Surpriseとは、日本では誕生日のパラドックスと呼ばれており、学校や職場などのある集団において、同じ誕生日の人が「結構な確率で」少なくとも一組は存在することを主張する。一年365日という可能性に比べれば予想外に多いので、直観に反するように感じる。Wikipediaの記事に依れば23人以上集まれば50%以上の確率でダブりが出るそうだ。確率計算が直観に反する好例として中学とかの教科書に取り上げられることも多い。

用語

数学的に定式化しよう。{ n }元集合から{ k }個の元を取り出す(復元抽出)とき、少なくとも2つが同一である確率を{ \beta_{n}^{k} }と置く。これを直接立式するのは極めて困難だが、全てが異なる確率

{ \displaystyle \pi_{n}^{k}=\left(1-\frac{1}{n}\right)\left(1-\frac{2}{n}\right)\dotsm\left(1-\frac{k-1}{n}\right) }

を用いれば{ \beta_{n}^{k}=1-\pi_{n}^{k} }となり計算できる。ただし{ n }{ k }も大きくなると物理的に難しくなるので、近似的に値を求めることができたら嬉しい。誕生日の例だと微妙だが、例えばあるインターネットサービスのパスワードが{ n=2^{64} }通りあったとして、{ k }人のアカウントのパスワードのどれかが「偶然」一致してしまう確率、と考えればその重要性は増すだろう。

因みに誕生日が重なる回数の期待値は簡単に求めることができる。確率変数{ X_{ij} }を、{ i }番目に取り出した元と{ j }番目の元が一致するとき{ 1 }、異なるとき{ 0 }を取るように定めれば、その期待値は

{ \displaystyle E(\sum_{i\neq j}X_{ij})=\sum_{i\neq j}E(X_{ij})=\sum_{i\neq j}\frac{1}{n}=\frac{k(k-1)}{2n} }

で計算できる。{ n=365 }のとき{ k\ge 28 }であれば期待値は{ 1 }以上となる。{ k=40 }人クラスなら期待値は{ 2.13\dotsb }なので、二組程度はいることになる。(3人一致すると回数は3とカウントしていることに注意。)

論文で述べられている内容

{ \pi_{n}^{k} }は積の形なので、対数を取ってみる。{ -\mathrm{log}(1-x)=\sum_{l=1}^{\infty}\frac{x^{l}}{l} }に注意すれば、

{ \displaystyle -\mathrm{log}\pi_{n}^{k}=-\sum_{j=1}^{k-1}\mathrm{log}\left(1-\frac{j}{n}\right)=\sum_{j=1}^{k-1}\sum_{l=1}^{\infty}\frac{\left(\frac{j}{n}\right)^{l}}{l}=\sum_{l=1}^{\infty}\frac{1}{ln^{l}}\sum_{j=1}^{k-1}j^{l} }

となる。ここで{ S_{k-1}^{l}:=\sum_{j=1}^{k-1}j^{l} }と置き、これを評価してみよう。

補題 実数値関数{ f\ge 0 }は適度な領域で定義され、適度に滑らかとする。{ f^{\prime\prime}\ge 0 }であるとき、

{ \displaystyle \sum_{i=1}^{k}f(i)\le\int_{0}^{k}f(x+\frac{1}{2})\mathrm{d}x }

が成り立つ。

(証明)区間{ \lbrack j, j+1 \rbrack }を考えれば、二階微分(傾きの変化率)が非負なので、{ x=j+\frac{1}{2} }における{ f(x+\frac{1}{2}) }の接線は、常にグラフの下側を通る。そこで接線が為す台形の面積は{ f(j+1) }に等しいため、

{ \displaystyle f(j+1)\le\int_{j}^{j+1}f(x+\frac{1}{2})\mathrm{d}x }

が成り立つ。{ \square }

補題{ x^{l} }に対して用いれば

{ \displaystyle \sum_{j=1}^{k-1}j^{l}\lt\int_{0}^{k-1}(x+\frac{1}{2})^{l}\mathrm{d}x\lt\frac{(k-\frac{1}{2})^{l+1}}{l+1} }

を得る。ここで{ N }に対して

{ \displaystyle \begin{align*} \sum_{l=N}^{\infty}\frac{S_{k-1}^{l}}{ln^{l}} &\lt \sum_{l=N}^{\infty}\frac{(k-\frac{1}{2})^{l+1}}{l(l+1)n^{l}}\lt\frac{k-\frac{1}{2}}{N(N+1)}\sum_{l=N}^{\infty}\left(\frac{k-\frac{1}{2}}{n}\right)^{l} \\ &=\frac{(k=\frac{1}{2})^{N+1}}{N(N+1)(1-\frac{k-\frac{1}{2}}{n})n^{N}}=:\epsilon_{n}^{k}(N) \end{align*} }

と計算できる。すると結局

{ \displaystyle \sum_{l=1}^{N-1}\frac{S_{k-1}^{l}}{ln^{l}}\lt -\mathrm{log}\pi_{n}^{k} \lt \sum_{l=1}^{N-1}\frac{S_{k-1}^{l}}{ln^{l}}+\epsilon_{n}^{k}(N) }

となり、任意の精度で近似できる。この上限と下限を{ u_{N}(k, n), l_{N}(k, n) }と置く。一般に奇数{ M }に対して

{ \displaystyle \sum_{m=0}^{M}\frac{(-x)^{m}}{m!}\lt e^{-x}\lt\sum_{m=0}^{M+1}\frac{(-x)^{m}}{m!} }

{ |x|\lt 1 }のとき成り立つ。この条件は{ k\lt\sqrt{n} }のとき{ |\mathrm{log}\pi_{n}^{k}|\lt 1 }となり満たされるので、このとき

{ \displaystyle -\sum_{m=1}^{M+1}\frac{(-l_{N}(k, n))^{m}}{m!}\lt\beta_{n}^{k}\lt -\sum_{m=1}^{M}\frac{(-u_{N}(k, n))^{m}}{m!} }

となる。これを用いて近似的に求めることができる。

所感

論文に依れば極めて良い精度で計算できるそう。ただ{ k }が大きくなると下の式は使えないので、対数を取る方法は芳しくない。この場合は、どちらかと言えば期待値を見た方が良いかもしれない。(別の基準になってしまうが。)

似たような話題として、プレゼント抽選会も割とパラドックスを感じやすいと気づいた。{ n }個のプレゼントを無作為に{ n }人に分配することを考える。一般にベルヌーイ試行を独立に複数回行う(復元抽出)と、当たりの個数は二項分布に従う。このサイトで確率0.01、試行回数100として計算すると、0個、1個、2個以上で大体3等分されることが分かる。(意味のある値に収束することを証明できる気がしないでもない。)つまり一個も当たらない人が結構いる一方で、二個も三個も当たる人が出てしまう。参加者の不満が募ったり、裏があるのではと勘繰ったりしてしまうことを避けるためにも、当選者を除く(非復元抽出)などしたほうが良いだろう。

疑似乱数について その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 })も一緒に考える。

疑似乱数について その0

某所でメルセンヌ・ツイスターの話題があり、その仕組みを知りたくなって勉強を始めた。とは言え疑似乱数とは何ぞや? 程度の知識しか無いため、当面はウィキペディアの受け売りになるけど纏めていく。

まずノイマン(John von Neumann)の貢献があって計算機が登場し、それと同時発生的に疑似乱数(pseudo random number)という概念が議論されるようになった。何故かと言うと計算機の目的はシミュレーションにあって、例えばウラム(Ulam)*1が考案した方法(モンテカルロ法)は中性子の動きを調べるのに用いられたそうだ。ただし乱数といっても疑似であり、その実体は与えられた初期値より漸次的に決まる数列を指す(数に限らないけど)。特にコンピュータは有限個の状態しか取れないので、その数列は必ず周期を持つので完璧な? 乱数とは程遠い。それでも周期が長かったり、出現する値が一様に分布していれば「乱数っぽい」だろう。この「乱数っぽさ」は統計的な検定手法により示すことができる。こうした検定を通り、また記憶装置や実行時間、実装のし易さなどの物理的制約も考慮されて、様々な要件を満たしたものが標準化されて一般的に用いられる。

理論、アルゴリズム、回路、実装(プログラム)など様々なレベルでの疑似乱数が研究されている。

ノイマンが最初に考案した方法(1946)は個人的に衝撃的だった。その名を平方採中法(middle-square method)という。{ 2k }桁の数{ a_{n} }を用意し、それを{ 2 }乗して中央の{ 2k }桁を{ a_{n+1} }とする。初期値{ a_{0} }の取り方で周期は変化するが高々{ 10^{2k} }程度になる。とにかく欠点だらけで、まず数学的に意味を見出しにくいのと、その結果として最大周期の判定法が分からないことがある。そして{ 2 }乗しているので{ k }を大きくすると巨大数同士の掛け算となり大変である。この大変さはイベントMATH POWER 2016を観れば実感できる。カオスのことを考えれば{ 2 }乗するのは分からなくもない。でもいきなり非線形でそれをノイマンが言ってるのが面白い。当時のコンピュータは扱える桁数が少ないのもあったかもしれない。

いやこれはダメだろ、と思ったかは分からないがLehmerが1949年に発表した乗算型合同法(multiplicative congruential method)はずっと簡素に{ x_{n+1}\equiv ax_{n} \pmod{m} }で定義される。{ a, m }の取り方で周期が変わるが、最大周期を判定する(効率の良い)方法がある(後述)。ちなみに最大周期{ m-1 }を取るなら初期値は{ 0 }でなければ何でもよい。先ほどと比べて、こちらは定数の乗算しかないのでシフト演算と(排他的論理)和で実現でき、実装も簡単なので嬉しい。

少し改良したのが線型合同法(linear congruential method)である。混合型(mixed-)とも呼ばれ、{ x_{n+1}\equiv ax_{n}+b }で定義される。こちらも最大周期を判定する方法がある。最近まで標準だったので今でも使われているらしい。色々と問題の指摘は受けてきたが、それを解消し続けてきた歴史もある。お遊び目的なら良し、でも時代遅れ。

線型帰還シフトレジスタ(LFSR: Linear Feedback Shift Register)*2やGFSR(Galois ?)は複数のシフト演算と和で漸次的に計算する方法。生成式の二元体{ \mathbb{F}_{2} }での規約性とかで最大周期を生成するかが決まるのかな? 要検証。松本、栗田(1992、94)はGFSRを行列で捻ってTwisted GFSRを作り、それを更に発展させたのがメルセンヌ・ツイスター(Mersenne-Twister)だそうだ。

次回は線型合同法に関する最大周期条件、の予定。参考文献は後でまとめて書きます。

*1:Borsuk-Ulamの定理のウラムですかね? ウィキペディアにはウラムの螺旋とか書いてあったけど。

*2:シフトレジスタも訳せよ! 諦めんなよ!