わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

内部状態を持つ擬似乱数生成器は再現可能

乱数の持つべき性質として,「無作為性」「予測不可能性」「再現不可能性」の3つを挙げましたが,「再現不可能性」は,周期を持たないことと同じ意味です.周期を持たないというのは,周期が無限大であるとも言い換えられます.フーリエ級数は周期的な関数を,三角関数と数列で表現したものですが,周期のない関数にも適用するために,周期を無限大として考えるというのは,数学の科目で習ったと思います.
さて,内部状態を持ち,種を与えて初期化し,1回乱数を生成すれば内部状態が更新されるというタイプの擬似乱数生成器は,必ず周期を持ち,したがって再現不可能性を満たさないことを,証明しておきます.
計算機上で構成するものなので,内部状態のサイズは固定であり,nビットとしておきましょう.
初期値は何でもかまいません.乱数を2のn乗回生成すると,内部状態は2のn乗回,更新されます.初期値と合わせると,2のn乗プラス1種類の,内部状態の値があるわけです.
この「2のn乗プラス1種類の,内部状態の値」を見るとですね,その中の少なくとも2つの内部状態は,同じになります.これは背理法で示せます.「2のn乗プラス1種類の,内部状態の値」がすべて異なっていると仮定すると,内部状態は2のn乗プラス1以上の異なる情報を保持できることになります.しかし内部状態はnビットであり,その取り得る値の数は,先頭のビットが0か1かの2種類,次のビットは0か1かの2種類,…というのがnビットですから,ちょうど2のn乗となり,矛盾します.
背理法を使いましたが,「巣箱がn個あって,そのどこにでもいいから鳩がn+1羽いるとしたら,必ずどこかの巣箱には鳩は2羽以上いる」というのは「鳩の巣論法」*1と呼ばれ,今回のケースも,この論法が適用できます.
さて本題に戻りますと,先頭から数えてx回乱数生成したときの内部状態と,y回乱数生成したときの内部状態とが一致したとします.もちろん,xとyは異なるものとします.では,それぞれで,もう1回ずつ乱数生成したら,乱数の値と内部状態はどうなっているでしょうか? それらも同じになるはずです.乱数生成も内部状態の更新も,内部状態のみに依存するわけですから.
そうすると,その次も同じ,その次も…となって,結局,x回生成した時点と,y回生成した時点とで,それ以降の乱数の系列が同じになります.これが周期です.
この場合,x<yを仮定すると y-x が周期の一つとなりますが,もしかしたらそれより小さい周期があるかもしれません.