擬似乱数生成装置及び擬似乱数生成用プログラム
【課題】周期延長を行い、最大周期長と一様性を確保する。
【解決手段】初期値設定手段11により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段12と、前記全単射写像準備手段12により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段13と、前記写像値計算手段13により得られた写像値からビット列を抽出するビット列抽出手段15と、前記ビット列抽出手段14によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段15とを具備する。
【解決手段】初期値設定手段11により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段12と、前記全単射写像準備手段12により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段13と、前記写像値計算手段13により得られた写像値からビット列を抽出するビット列抽出手段15と、前記ビット列抽出手段14によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段15とを具備する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、全単射写像を用いて擬似乱数を生成する擬似乱数生成装置及び擬似乱数生成用プログラムに関するものである。
【背景技術】
【0002】
従来の擬似乱数生成装置においては、有限演算実装における非線形(カオス)写像を用いた擬似乱数生成法を採用したものが知られている(特許文献1参照)。この従来例にあっては、全単射を保証しない写像を用いていた。また、全単射を保証するものでも、短周期帯に落ち入ることで長い周期が得られなくなることから、周期を監視する機構が必要であった。
【0003】
また、最大周期と一様性を保証する擬似乱数生成器として線形合同法や、M系列乱数(GFSR:Generalized Feedbacked Shift Register)が知られている。しかしながら、周期が限定されており生成パターンも一方向的に決定されたものを出力する方式であり、生成パターンが限られていた。また、これらの生成法では、一素周期の中で各値が一度だけ出現する。従って、ある値を観測したらその後、その値はその周期中で出現しない。
【0004】
上記GFSRの改良としてTwisted GFSR、メルセンヌツイスターが存在するが、周期を延ばすパラメータ帯が固定値であり、それを探索する必要があるという労力が存在する。
【0005】
更に、写像変更ないしは写像変換を用いた擬似乱数生成装置としては、二次元キャットマップのような写像を用いるものが知られている(特許文献2参照)。しかしながら、この二次元キャットマップは暗号化や復号に不適切と言われており、また、周期延長が可能なものでもない。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−152706号公報
【特許文献2】特開2007−264147号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は上記のような擬似乱数生成における現状に鑑みてなされたもので、その目的は、周期延長を行い、最大周期長と一様性を確保し、かつ大量に乱数を生成することのできる、全単射写像を用いた擬似乱数生成装置及び擬似乱数生成用プログラムを提供することである。
【課題を解決するための手段】
【0008】
本発明に係る擬似乱数生成装置は、擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段と、この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段と、前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段と、前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段と、前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段とを具備することを特徴とする。
【0009】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、写像関数として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを用いることを特徴とする。
【0010】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備することを特徴とする。
【0011】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備することを特徴とする。
【0012】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備することを特徴とする。
【0013】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段、この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段、前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段、前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段、前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段として機能させることを特徴とする。
【0014】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを写像関数として用いるように機能させることを特徴とする。
【0015】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備するように機能させることを特徴とする。
【0016】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備するように機能させることを特徴とする。
【0017】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備するように機能させることを特徴とする
【発明の効果】
【0018】
本発明によれば、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備し、準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返すことにより写像値計算を行うので、周期延長用全単射写像によって周期延長が行われ、最大周期長と一様性を確保することができる。
【0019】
本発明では、全単射写像であれば制限なく利用可能であり、写像の順番の入れ替えや再利用もできるため、生成パターンを豊富に提供することができる。
【図面の簡単な説明】
【0020】
【図1】本発明の擬似乱数生成装置における全単射族による写像値の周期延長手法について説明するための写像値巡回状態を示す図。
【図2】本発明の擬似乱数生成装置における全単射族による写像値の周期延長全単射写像の生成について説明するための図。
【図3】本発明に係る擬似乱数生成装置の構成を示すブロック図。
【図4】本発明に係る擬似乱数生成装置を構成するコンピュータシステムのブロック図。
【図5】本発明に係る擬似乱数生成装置の第1の実施例の動作を説明するためのフローチャート。
【図6】本発明に係る擬似乱数生成装置の第2の実施例の動作を説明するためのフローチャート。
【図7】本発明の擬似乱数生成装置における全単射族による写像として、線形合同法を用いた各初期値の列を示す図。
【図8】本発明の擬似乱数生成装置における全単射族による写像として、M系列(GFSR)を用いた各初期値の列を示す図。
【図9】本発明の擬似乱数生成装置における全単射族による写像として、M系列(TGFSR)を用いた各初期値の列を示す図。
【図10】本発明の擬似乱数生成装置における全単射族による写像として用いる、変形テント写像のマップを示す図。
【図11】本発明の擬似乱数生成装置における全単射族による写像として、変形テント写像を用いた写像遷移を示す図。
【発明を実施するための形態】
【0021】
以下添付図面を参照して、本発明に係る擬似乱数生成装置及び擬似乱数生成用プログラムを説明する。原理は次の通りである。例として次の(式1)に示す有限集合x(集合の数が4)の全単射族の写像“ f0、f1、f2”を3つ用意した場合の、図1の如き写像の列を例とする。
【0022】
【数1】
【0023】
これらの漸化式は次の(式2)により表わされる。
【0024】
【数2】
【0025】
上記において、選択する写像関数fyiの順番yiに制限はないが、図1の例では
yi=(i+1)mod3 (i=0,1,…)を用いている。
【0026】
上記写像によって繰り返し写像を行って得られる数列は、初期値x0=0のとき、
0, 2, 1, 3, 1, 2, 2, 0, 3
を繰り返す周期長9の周期帯(初期値x0=2、x0=3によっても写像結果である数列のパターンが同じ)が得られる。また、初期値x0=1のときには、
1, 3, 0
を繰り返す周期長3の周期帯が得られる。このように例示の写像をそのまま用いた場合には、生成パターンが2つの周期帯に分かれて存在する。
【0027】
このように全単射写像を単に用いただけでは周期帯がいくつかに分かれ、短周期が存在し、各値の出現頻度が一様にならない。係る系として、有限演算下での非線形写像を用いて得られる乱数列があり、長周期性と一様性の保証された擬似乱数列を得ようとした場合に課題となる。
【0028】
ここで、“f2”を理想的な写像“Q”に変更することによって、3種類の写像を用いる場合の最大周期長12を実現し、かつ各値の出現頻度が一様に3となる数列を得ることを可能にする。即ち、長周期性と一様性の保証された擬似乱数列を得るための理想的な全単射写像“Q”を次のようにして作成する。
【0029】
まず、図1にて用いた全単射写像“f0、f1”の逆写像“f0-1、f1-1 ”を生成する。また、エルゴード的な全単射写像“α“を用意する。そして、これら逆写像“f0-1、f1-1 ”とエルゴード的な全単射写像“α“を用いて、図2に示すように写像“Q”を作る計算(Q=αf0-1f1-1)を実行する。
【0030】
このように、図1にて用いた全単射写像“f2”を“Q”に変更することで、初期値x0=1のとき
0, 2, 1, 1, 3, 0, 2, 0, 3, 3, 1, 2
を繰り返す最大周期長12の数列が得られ、各値の出現頻度が一様な値(3回)である数列を得ることが可能となる。
【0031】
即ち、図2で用いた全単射写像の数が“3”であり、集合の数が“4”であり、素周期が3種類の全単射写像を用いるとき、その最大周期長は、3×4=12から求められる。そして、上記の通り、各値の出現頻度が一様に3回となっている擬似乱数列が得られていることが分かる。
【0032】
上記において、選択する写像関数“fyi”(yi=imodK:iは写像回数、Kは用意した全単射写像の数)は全単射であれば何でもよく、写像関数“fyi”は1回の写像の度に変更する。
【0033】
図2で用いた周期延長計算に利用する写像“α“はいくつかの周期帯に分かれて短周期に落ちない、最大周期を持つ全単射写像であればよい(本発明において、周期延長計算に利用する写像“α“を「エルゴード的な全単射写像」と呼ぶ)。例えば、写像の集合要素を単純にシフト(f(x)=(x+1)modN ただし、Nは集合の数)したものとすることができる。選択した全単射写像の逆写像とエルゴード的な全単射写像とを用い、周期を延長する写像“Q”を計算して作ることが重要である。これによって、最大周期長と一様性を持つ乱数列を生成可能になることが分かった。
【0034】
選択し得る全単射写像は、最大周期をもつ擬似乱数生成方法で知られる線形合同法、M系列(GSFR)、GSFRの周期を延長させた改良版(Twisted GFSR、メルセンヌツイスター等)のような完成されたものを用いることもできるが、短周期帯を含んでいても全単射写像であれば特に制限はない。これらの系では乱数列パターンは決定されているが、全単射写像“fyi”の順番の入れ替えや写像“Q”を変更することで乱数列のパターンを、より豊富に作ることが可能である。
【0035】
本発明の実施例に係る擬似乱数生成装置は、図3に示すように構成される。即ち、初期値設定手段11、全単射写像準備手段12、写像値計算手段13、ビット列抽出手段14及び擬似乱数出力手段15を備える。初期値設定手段11は、擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定するものである。初期値に関しては、コンピュータシステムのキーボードなどの入力手段から入力することができる。
【0036】
全単射写像準備手段12は、上記初期値設定手段11により設定された写像関数を用いて、少なくとも1つの原全単射写像と、上記原全単射写像の逆写像と上記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備するものである。また、写像値計算手段13は、上記全単射写像準備手段12により準備された、上記原全単射写像を一度ずつ用いて写像値を得た後に更に上記周期延長用全単射写像により写像値を得る処理を繰り返すものである。
【0037】
ビット列抽出手段14は、上記写像値計算手段13により得られた写像値からビット列を抽出するものである。擬似乱数出力手段15は、上記ビット列抽出手段14によって抽出されたビット列を上記初期値設定手段11により設定されたビット長となるまで出力するものである。
【0038】
擬似乱数生成装置は、図4に示されるコンピュータシステム100により実現される。このコンピュータシステム100は、擬似乱数を生成するコンピュータとしてのCPU101と、CPU101が用いる擬似乱数生成用プログラムが格納され、またCPU101が行った演算結果などが記憶されるメモリ102とを備えている。
【0039】
CPU101には、キーボードやマウスなどのデータを入力するための入力部103と、生成された擬似乱数を表示出力やプリント出力或いは別システムに出力するための出力部104が備えられている。
【0040】
このCPU101がメモリ102内の図5に示されるフローチャートに対応する擬似乱数生成用プログラムを実行することによって、図3の各手段として機能する。以下、このフローチャートに基づき擬似乱数生成装置の動作を説明する。スタートとなり、初期化処理を行う(S11)。初期化処理S11においは、例えばシードSeedが与えられ、このシードSeedに基づき予め用意されている写像関数が複数である場合に、1写像関数を選択する。写像関数としては、線形合同法による写像、M系列乱数の写像、GFSR(Generalized Feedbacked Shift Register)の写像、Twisted GFSR(GFSRの改良)の写像、メルセンヌツイスター(TGFSRの改良)の写像、変形テント写像、その他全単射を満たす任意の全単射写像(図2に示した写像等)を用いることができる。1つの写像関数を有する場合には、シードSeedに基づく選択は行われない。シードSeedは、プログラムの立ち上り毎に適当な数値を発生させるなどにより与えられるようにし、シードSeedと写像関数を対応付けたテーブルなどにより関数選択を行う。
【0041】
更に、初期化処理S11においは、シードSeedに基づく写像初期値x0の決定(決定手法は写像関数と同様)、写像回数iを0とする初期化、写像の順番の設定、擬似乱数のランダムビット長nの設定(ユーザによる入力)などが行われる。
【0042】
ステップS11に続いて、上記で選択した写像関数からK個の全単射写像f0〜fK-1を生成して写像の準備を行う(S12)。ここで準備された全単射写像f0〜fK-1を、上記写像関数から生成したという意味で原全単射写像という。ステップS12の次には、上記ステップS12において準備された原全単射写像を用いて、ステップS11の初期化処理において設定された写像の順番に基づき、写像計算を行って1つの写像値を得る。(S13)。
【0043】
写像計算(S13)では、ステップS12において準備された原単射写像fy1の数がKであるとき、次の(式3)の漸化式により計算を行う。また、関数hによって写像の順番を選択する。
【数3】
【0044】
上記のステップS13において写像値xi+1が得られると、iをi+1へカウントアップし(S14)、ステップS11の初期化処理において設定された位置の所定ビットを抽出してバッファへ蓄積する(S15)。例えば、最下位1ビットを抽出する場合の抽出式は、xi+1&1である。
【0045】
ステップS15に続いて、蓄積したビット列を出力するタイミングであるかを検出し(S16)、YESである場合には蓄積しておいたビット列を出力する(S17)。出力タイミングとしては、(1)バッファが満杯になった時点に出力、(2)システムの要求時に出力、(3)ユーザの要求時に出力のいずれかなどが初期設定される。ステップS16においてNOである場合には、ステップS18へ進む。
【0046】
ステップS16においてNOへ分岐するか、またはステップS17における処理が終わると、周期延長用全単射写像を準備するか否かの判定を行う(S18)。つまり、K回の原全単射写像による写像が終わったか検出される。ここで、ステップS18においてYESとなると、ステップS19において周期延長用全単射写像を準備する。
【0047】
具体的には、既に述べた通り、原全単射写像“f0、f1・・・、fK-1”の逆写像“f0-1、f1-1 ・・・、fK-1-1”を生成し、また、エルゴード的な全単射写像“α“を用意する。そして、これら逆写像“f0-1、f1-1 ・・・、fK-1-1”とエルゴード的な全単射写像“α“を用いて乗算を行い、写像“Q”を作る。ここで、次の(式4)以降の関係が成り立っている。
【0048】
【数4】
【0049】
このステップS19の次には、ステップS13へ進み、ステップS19において準備された周期延長用全単射写像xi+1による写像計算を行って1つの写像値を得る(S13)。一方、上記ステップS18において、NOとなるとステップS20へ進んで、これまでに生成された擬似乱数のランダムビット長が初期設定された長さnとなったかを検出し(S20)、NOであればステップS12へ戻って処理を続け、ステップS20においてYESとなると処理を終了してエンドとなる。
【0050】
このように、全単射写像準備手段12は、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備するものである。そして、上記図5に示されるフローチャートでは、全単射写像準備手段12が、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備する(ステップS19)ことを示した。しかし、これによらず、次の図6のフローチャートに示すように、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備する(ステップS30)としても良い。
【0051】
図6のフローチャートにおいては、ステップS30において、ステップS11で選択した写像関数からK個の全単射写像f0〜fK-1を生成して写像の準備を行うと共に、原全単射写像“f0、f1・・・、fK-1”の逆写像“f0-1、f1-1 ・・・、fK-1-1”を生成し、また、エルゴード的な全単射写像“α“を用意する。そして、これら逆写像“f0-1、f1-1 ・・・、fK-1-1”とエルゴード的な全単射写像“α“を用いて乗算を行い、写像“Q”を作る。
【0052】
作成した写像“Q”は、処理に備えてメモリ102内のバッファに格納しておき、必要な周期においてステップS13において用いる。エルゴード的な全単射写像“α“は、写像の集合要素を単純にシフト(f(x)=(x+1)modN ただし、Nは集合の数)したものとすることができる。この場合、1周期毎にシフト量を変化させるなどして1周期毎に異なるαを作成し、これを用いて周期延長用全単射写像を準備するようにしても良い。1周期毎に異なるαを作成することは、図5のフローチャートにおいてステップS19で行うようにしても良い。
【0053】
図6のフローチャートにおいてステップS30以外では、図5のフローチャートにおける、周期延長用全単射写像を準備するか否かの判定を行うステップS18と周期延長用全単射写像を準備するステップS19の処理が削除される。また、ステップS20において、NOへ分岐するとステップS13へ戻って処理を続ける。これ以外は、図5において説明した処理と同様の処理が行われる。
【0054】
次に、写像関数を線形合同法の写像とした場合に行われる擬似乱数生成処理の一例を説明する。一般的に利用されている線形合同法の式は次の(式5)で与えられる。
【0055】
【数5】
【0056】
例としてM=7とした場合、a=2,c=0の時、全単射写像“f0”とすると
【0057】
【数6】
【0058】
上記(式6)による列は、初期値X0 =1のとき、
1,2,4を繰り返す周期長3の周期帯と、
初期値X0 =3のとき
3,6,5を繰り返す周期長3の周期帯との計2つの周期帯が存在する。
【0059】
a=5,c=0のとき、全単射写像“f1”とすると
【0060】
【数7】
【0061】
上記(式7)から
1,5,4,6,2,3の最大周期長6で循環する列が得られる。
2つの全単射写像“f0、f1”と、最大周期と一様性を実現する写像“Q”を用いて写像の列を作る。“f0、f1”の逆写像“f0-1、f1-1 ”と、ここでエルゴード的な全単射写像αは、次の通りである。
【0062】
【数8】
【0063】
このような全単射写像“α“と、上記逆写像“f0-1、f1-1 ”を用意して最大周期と一様性を実現する写像“Q”をQ=αf0-1f1-1により計算すると
【0064】
【数9】
【0065】
が得られ、“f0→f1→Q”の各初期値から得られる列は、図7のようになる。初期値が1の場合
1, 2, 3, 2, 4, 6, 3, 6, 2, 4, 1, 5, 5, 3, 1, 6, 5, 4
になり、最大周期長が3×6=18である、一様な出現頻度を満たす数列が得られる。
【0066】
次に、写像関数をM系列乱数で知られるGFSR(Generalized Feedbacked Shift Register)の写像とした場合に行われる擬似乱数生成処理の一例を説明する。GFSRの漸化式は(式8)の通りであり、ここでn=3,m=1の場合には、(式9)となる。
【0067】
【数10】
【0068】
これにより、周期長7(2n-1)の循環する数列が生成できる。GFSRの全単射写像を“f0”とすると、f0は次の(式10)となる。
【0069】
【数11】
【0070】
次に、“ f0” と最大周期と一様性を実現する写像“Q”を用いて写像の列を作る。なお、GFSRでは設定の自由度が初期値x0のみであり、数列のパターンは1つだけである。“f0”の逆写像“f0-1”と、ここでエルゴード的な全単射写像αは、次の通りである。
【0071】
【数12】
【0072】
このような全単射写像“α“と、上記逆写像“f0-1”を用意して最大周期と一様性を実現する写像 “Q”をQ=αf0-1により計算すると次のQが得られる。
【0073】
【数13】
【0074】
f0とQを用いて、“f0→Q”とする写像を繰り返し、各初期値から得られる数列は図8に示す通りとなる。初期値が1の場合
1, 4, 2, 5, 3, 1, 4, 2, 5, 6, 6, 7, 7, 3, 1
となり、最大周期長が2×7=14であり、一様な出現頻度を満たす数列が得られる。
【0075】
次に、写像関数をM系列乱数で知られるGFSRの改良版であるTGFSR(Twisted Generalized Feedbacked Shift Register)を含む写像とした場合に行われる擬似乱数生成処理の一例を説明する。TGFSRの漸化式は次の(式11)により表わされ、Aは次のような行列である。
【0076】
【数14】
【0077】
上記行列の最下行におけるベクトルaが最大周期を実現するものを選択すれば、周期は2nω-1になる。ここでn=2,m=1,ω=2の場合には、(式11)は次の(式12)の漸化式となるので、この漸化式を計算する。
【0078】
【数15】
【0079】
Aの行列を次の通りとして、全単射写像を計算すると、次の“f0”が得られる。
【0080】
【数16】
【0081】
上記“ f0”の写像は、
1,8,10,14,11,6の周期長6の列と
2,4,5,13,7,9の周期長6の列と
3,12,15の周期長3の列との、3つの短周期からなる周期帯を持つ。このため“f0”単独では最大周期が得られず、TGFSRとはならない。
【0082】
Aの行列を次の通りとして、全単射写像を計算すると“f1”が得られる。
【0083】
【数17】
上記“ f1”の写像では、
1, 12, 15, 7, 13, 3, 8, 10, 14, 11, 2, 4, 5, 9, 6
の最大周期を実現する周期長15の数列が得られる。“f1”はエルゴード的であり、TGFSRであるといえる。“f0”の逆写像“f0-1 ”と、“f1”の逆写像“f1-1 ”と、更に、ここでエルゴード的な全単射写像αとを次の通りに用意する。
【0084】
【数18】
【0085】
最大周期と一様性を実現する写像 “Q”をQ=αf0-1f1-1により計算すると、次のQが得られる。
【0086】
【数19】
【0087】
そして、“f0→f1→Q”の各初期値から得られる列は、図9に示す通りとなる。初期値が1の場合、
1, 8, 10, 2, 4, 5, 3, 12, 15, 4, 5, 9, 5, 13, 3, 6, 1, 12, 7, 9, 6, 8, 10, 14, 9, 2, 4, 10, 14, 11, 11, 6, 1, 12, 15, 7, 13, 7, 13, 14, 11, 2, 15, 3, 8
で循環し、最大周期長が3×15=45となり、一様な出現頻度を満たす数列が得られる。
【0088】
この設計において、一般に任意のn,ωでは全単射写像が2ω−1+1個存在する。従って、全単射写像の周期を最低でも2ω−1+1とすることができる。このとき、擬似乱数列の素周期は、(2ω−1+1)(2nω−1)となり、各値の出現頻度は一様に、2ω−1+1となる。例えば、ω=32,n=624のとき、素周期は(231+1)(219968−1)となり、同じ演算精度32ビットで、状態の次元が32×624であるメルセンヌツイスター19937の周期219937−1より、遥かに長い周期列が得られる。
【0089】
次に、写像関数を、一次元写像を用いた全単射族である変形テント写像とした場合に行われる擬似乱数生成処理の一例を説明する。演算精度Lビットとした時、演算幅N=2L−1で表した変形テント写像式は次の式の通りであり、変形テント写像のマップを図10に示す。
【0090】
【数20】
【0091】
上記変形テント写像式から用意できる全単射写像の数をKとすると、下記のように各写像“fM j”の全単射写像を用意できる。ここで、用意できる全単射写像の最大個数は、K≦Nである。また、逆写像“fM j−1”は次の通りとなる。
【0092】
【数21】
【0093】
更に、エルゴード的な全単射写像“α“を用意し、次式のように写像“Q”を作る計算を実行する。
【0094】
【数22】
【0095】
上記のように、用意したK個の写像“fM j“によってK回分の写像計算を行った後、写像“Q”を適応して、図11に示すようにサイクリックに写像を行う。このばあいにおいて、各全単射写像“fM j“の集合の要素数は演算精度のN+1であることから、素周期(N+1)(K+1)であり、各値はK+1回出現する。素周期長はK=Nの時(N+1)2であり、一様性が保証された擬似乱数列を得ることができる。
【符号の説明】
【0096】
11 初期値設定手段
12 全単射写像準備手段
13 写像値計算手段
14 ビット列抽出手段
15 擬似乱数出力手段
100 コンピュータシステム
102 メモリ
103 入力部
104 出力部
【技術分野】
【0001】
この発明は、全単射写像を用いて擬似乱数を生成する擬似乱数生成装置及び擬似乱数生成用プログラムに関するものである。
【背景技術】
【0002】
従来の擬似乱数生成装置においては、有限演算実装における非線形(カオス)写像を用いた擬似乱数生成法を採用したものが知られている(特許文献1参照)。この従来例にあっては、全単射を保証しない写像を用いていた。また、全単射を保証するものでも、短周期帯に落ち入ることで長い周期が得られなくなることから、周期を監視する機構が必要であった。
【0003】
また、最大周期と一様性を保証する擬似乱数生成器として線形合同法や、M系列乱数(GFSR:Generalized Feedbacked Shift Register)が知られている。しかしながら、周期が限定されており生成パターンも一方向的に決定されたものを出力する方式であり、生成パターンが限られていた。また、これらの生成法では、一素周期の中で各値が一度だけ出現する。従って、ある値を観測したらその後、その値はその周期中で出現しない。
【0004】
上記GFSRの改良としてTwisted GFSR、メルセンヌツイスターが存在するが、周期を延ばすパラメータ帯が固定値であり、それを探索する必要があるという労力が存在する。
【0005】
更に、写像変更ないしは写像変換を用いた擬似乱数生成装置としては、二次元キャットマップのような写像を用いるものが知られている(特許文献2参照)。しかしながら、この二次元キャットマップは暗号化や復号に不適切と言われており、また、周期延長が可能なものでもない。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−152706号公報
【特許文献2】特開2007−264147号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は上記のような擬似乱数生成における現状に鑑みてなされたもので、その目的は、周期延長を行い、最大周期長と一様性を確保し、かつ大量に乱数を生成することのできる、全単射写像を用いた擬似乱数生成装置及び擬似乱数生成用プログラムを提供することである。
【課題を解決するための手段】
【0008】
本発明に係る擬似乱数生成装置は、擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段と、この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段と、前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段と、前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段と、前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段とを具備することを特徴とする。
【0009】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、写像関数として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを用いることを特徴とする。
【0010】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備することを特徴とする。
【0011】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備することを特徴とする。
【0012】
本発明に係る擬似乱数生成装置では、全単射写像準備手段は、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備することを特徴とする。
【0013】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段、この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段、前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段、前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段、前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段として機能させることを特徴とする。
【0014】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを写像関数として用いるように機能させることを特徴とする。
【0015】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備するように機能させることを特徴とする。
【0016】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備するように機能させることを特徴とする。
【0017】
本発明に係る擬似乱数生成用プログラムは、擬似乱数を生成するコンピュータを、全単射写像準備手段として、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備するように機能させることを特徴とする
【発明の効果】
【0018】
本発明によれば、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備し、準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返すことにより写像値計算を行うので、周期延長用全単射写像によって周期延長が行われ、最大周期長と一様性を確保することができる。
【0019】
本発明では、全単射写像であれば制限なく利用可能であり、写像の順番の入れ替えや再利用もできるため、生成パターンを豊富に提供することができる。
【図面の簡単な説明】
【0020】
【図1】本発明の擬似乱数生成装置における全単射族による写像値の周期延長手法について説明するための写像値巡回状態を示す図。
【図2】本発明の擬似乱数生成装置における全単射族による写像値の周期延長全単射写像の生成について説明するための図。
【図3】本発明に係る擬似乱数生成装置の構成を示すブロック図。
【図4】本発明に係る擬似乱数生成装置を構成するコンピュータシステムのブロック図。
【図5】本発明に係る擬似乱数生成装置の第1の実施例の動作を説明するためのフローチャート。
【図6】本発明に係る擬似乱数生成装置の第2の実施例の動作を説明するためのフローチャート。
【図7】本発明の擬似乱数生成装置における全単射族による写像として、線形合同法を用いた各初期値の列を示す図。
【図8】本発明の擬似乱数生成装置における全単射族による写像として、M系列(GFSR)を用いた各初期値の列を示す図。
【図9】本発明の擬似乱数生成装置における全単射族による写像として、M系列(TGFSR)を用いた各初期値の列を示す図。
【図10】本発明の擬似乱数生成装置における全単射族による写像として用いる、変形テント写像のマップを示す図。
【図11】本発明の擬似乱数生成装置における全単射族による写像として、変形テント写像を用いた写像遷移を示す図。
【発明を実施するための形態】
【0021】
以下添付図面を参照して、本発明に係る擬似乱数生成装置及び擬似乱数生成用プログラムを説明する。原理は次の通りである。例として次の(式1)に示す有限集合x(集合の数が4)の全単射族の写像“ f0、f1、f2”を3つ用意した場合の、図1の如き写像の列を例とする。
【0022】
【数1】
【0023】
これらの漸化式は次の(式2)により表わされる。
【0024】
【数2】
【0025】
上記において、選択する写像関数fyiの順番yiに制限はないが、図1の例では
yi=(i+1)mod3 (i=0,1,…)を用いている。
【0026】
上記写像によって繰り返し写像を行って得られる数列は、初期値x0=0のとき、
0, 2, 1, 3, 1, 2, 2, 0, 3
を繰り返す周期長9の周期帯(初期値x0=2、x0=3によっても写像結果である数列のパターンが同じ)が得られる。また、初期値x0=1のときには、
1, 3, 0
を繰り返す周期長3の周期帯が得られる。このように例示の写像をそのまま用いた場合には、生成パターンが2つの周期帯に分かれて存在する。
【0027】
このように全単射写像を単に用いただけでは周期帯がいくつかに分かれ、短周期が存在し、各値の出現頻度が一様にならない。係る系として、有限演算下での非線形写像を用いて得られる乱数列があり、長周期性と一様性の保証された擬似乱数列を得ようとした場合に課題となる。
【0028】
ここで、“f2”を理想的な写像“Q”に変更することによって、3種類の写像を用いる場合の最大周期長12を実現し、かつ各値の出現頻度が一様に3となる数列を得ることを可能にする。即ち、長周期性と一様性の保証された擬似乱数列を得るための理想的な全単射写像“Q”を次のようにして作成する。
【0029】
まず、図1にて用いた全単射写像“f0、f1”の逆写像“f0-1、f1-1 ”を生成する。また、エルゴード的な全単射写像“α“を用意する。そして、これら逆写像“f0-1、f1-1 ”とエルゴード的な全単射写像“α“を用いて、図2に示すように写像“Q”を作る計算(Q=αf0-1f1-1)を実行する。
【0030】
このように、図1にて用いた全単射写像“f2”を“Q”に変更することで、初期値x0=1のとき
0, 2, 1, 1, 3, 0, 2, 0, 3, 3, 1, 2
を繰り返す最大周期長12の数列が得られ、各値の出現頻度が一様な値(3回)である数列を得ることが可能となる。
【0031】
即ち、図2で用いた全単射写像の数が“3”であり、集合の数が“4”であり、素周期が3種類の全単射写像を用いるとき、その最大周期長は、3×4=12から求められる。そして、上記の通り、各値の出現頻度が一様に3回となっている擬似乱数列が得られていることが分かる。
【0032】
上記において、選択する写像関数“fyi”(yi=imodK:iは写像回数、Kは用意した全単射写像の数)は全単射であれば何でもよく、写像関数“fyi”は1回の写像の度に変更する。
【0033】
図2で用いた周期延長計算に利用する写像“α“はいくつかの周期帯に分かれて短周期に落ちない、最大周期を持つ全単射写像であればよい(本発明において、周期延長計算に利用する写像“α“を「エルゴード的な全単射写像」と呼ぶ)。例えば、写像の集合要素を単純にシフト(f(x)=(x+1)modN ただし、Nは集合の数)したものとすることができる。選択した全単射写像の逆写像とエルゴード的な全単射写像とを用い、周期を延長する写像“Q”を計算して作ることが重要である。これによって、最大周期長と一様性を持つ乱数列を生成可能になることが分かった。
【0034】
選択し得る全単射写像は、最大周期をもつ擬似乱数生成方法で知られる線形合同法、M系列(GSFR)、GSFRの周期を延長させた改良版(Twisted GFSR、メルセンヌツイスター等)のような完成されたものを用いることもできるが、短周期帯を含んでいても全単射写像であれば特に制限はない。これらの系では乱数列パターンは決定されているが、全単射写像“fyi”の順番の入れ替えや写像“Q”を変更することで乱数列のパターンを、より豊富に作ることが可能である。
【0035】
本発明の実施例に係る擬似乱数生成装置は、図3に示すように構成される。即ち、初期値設定手段11、全単射写像準備手段12、写像値計算手段13、ビット列抽出手段14及び擬似乱数出力手段15を備える。初期値設定手段11は、擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定するものである。初期値に関しては、コンピュータシステムのキーボードなどの入力手段から入力することができる。
【0036】
全単射写像準備手段12は、上記初期値設定手段11により設定された写像関数を用いて、少なくとも1つの原全単射写像と、上記原全単射写像の逆写像と上記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備するものである。また、写像値計算手段13は、上記全単射写像準備手段12により準備された、上記原全単射写像を一度ずつ用いて写像値を得た後に更に上記周期延長用全単射写像により写像値を得る処理を繰り返すものである。
【0037】
ビット列抽出手段14は、上記写像値計算手段13により得られた写像値からビット列を抽出するものである。擬似乱数出力手段15は、上記ビット列抽出手段14によって抽出されたビット列を上記初期値設定手段11により設定されたビット長となるまで出力するものである。
【0038】
擬似乱数生成装置は、図4に示されるコンピュータシステム100により実現される。このコンピュータシステム100は、擬似乱数を生成するコンピュータとしてのCPU101と、CPU101が用いる擬似乱数生成用プログラムが格納され、またCPU101が行った演算結果などが記憶されるメモリ102とを備えている。
【0039】
CPU101には、キーボードやマウスなどのデータを入力するための入力部103と、生成された擬似乱数を表示出力やプリント出力或いは別システムに出力するための出力部104が備えられている。
【0040】
このCPU101がメモリ102内の図5に示されるフローチャートに対応する擬似乱数生成用プログラムを実行することによって、図3の各手段として機能する。以下、このフローチャートに基づき擬似乱数生成装置の動作を説明する。スタートとなり、初期化処理を行う(S11)。初期化処理S11においは、例えばシードSeedが与えられ、このシードSeedに基づき予め用意されている写像関数が複数である場合に、1写像関数を選択する。写像関数としては、線形合同法による写像、M系列乱数の写像、GFSR(Generalized Feedbacked Shift Register)の写像、Twisted GFSR(GFSRの改良)の写像、メルセンヌツイスター(TGFSRの改良)の写像、変形テント写像、その他全単射を満たす任意の全単射写像(図2に示した写像等)を用いることができる。1つの写像関数を有する場合には、シードSeedに基づく選択は行われない。シードSeedは、プログラムの立ち上り毎に適当な数値を発生させるなどにより与えられるようにし、シードSeedと写像関数を対応付けたテーブルなどにより関数選択を行う。
【0041】
更に、初期化処理S11においは、シードSeedに基づく写像初期値x0の決定(決定手法は写像関数と同様)、写像回数iを0とする初期化、写像の順番の設定、擬似乱数のランダムビット長nの設定(ユーザによる入力)などが行われる。
【0042】
ステップS11に続いて、上記で選択した写像関数からK個の全単射写像f0〜fK-1を生成して写像の準備を行う(S12)。ここで準備された全単射写像f0〜fK-1を、上記写像関数から生成したという意味で原全単射写像という。ステップS12の次には、上記ステップS12において準備された原全単射写像を用いて、ステップS11の初期化処理において設定された写像の順番に基づき、写像計算を行って1つの写像値を得る。(S13)。
【0043】
写像計算(S13)では、ステップS12において準備された原単射写像fy1の数がKであるとき、次の(式3)の漸化式により計算を行う。また、関数hによって写像の順番を選択する。
【数3】
【0044】
上記のステップS13において写像値xi+1が得られると、iをi+1へカウントアップし(S14)、ステップS11の初期化処理において設定された位置の所定ビットを抽出してバッファへ蓄積する(S15)。例えば、最下位1ビットを抽出する場合の抽出式は、xi+1&1である。
【0045】
ステップS15に続いて、蓄積したビット列を出力するタイミングであるかを検出し(S16)、YESである場合には蓄積しておいたビット列を出力する(S17)。出力タイミングとしては、(1)バッファが満杯になった時点に出力、(2)システムの要求時に出力、(3)ユーザの要求時に出力のいずれかなどが初期設定される。ステップS16においてNOである場合には、ステップS18へ進む。
【0046】
ステップS16においてNOへ分岐するか、またはステップS17における処理が終わると、周期延長用全単射写像を準備するか否かの判定を行う(S18)。つまり、K回の原全単射写像による写像が終わったか検出される。ここで、ステップS18においてYESとなると、ステップS19において周期延長用全単射写像を準備する。
【0047】
具体的には、既に述べた通り、原全単射写像“f0、f1・・・、fK-1”の逆写像“f0-1、f1-1 ・・・、fK-1-1”を生成し、また、エルゴード的な全単射写像“α“を用意する。そして、これら逆写像“f0-1、f1-1 ・・・、fK-1-1”とエルゴード的な全単射写像“α“を用いて乗算を行い、写像“Q”を作る。ここで、次の(式4)以降の関係が成り立っている。
【0048】
【数4】
【0049】
このステップS19の次には、ステップS13へ進み、ステップS19において準備された周期延長用全単射写像xi+1による写像計算を行って1つの写像値を得る(S13)。一方、上記ステップS18において、NOとなるとステップS20へ進んで、これまでに生成された擬似乱数のランダムビット長が初期設定された長さnとなったかを検出し(S20)、NOであればステップS12へ戻って処理を続け、ステップS20においてYESとなると処理を終了してエンドとなる。
【0050】
このように、全単射写像準備手段12は、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備するものである。そして、上記図5に示されるフローチャートでは、全単射写像準備手段12が、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備する(ステップS19)ことを示した。しかし、これによらず、次の図6のフローチャートに示すように、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備する(ステップS30)としても良い。
【0051】
図6のフローチャートにおいては、ステップS30において、ステップS11で選択した写像関数からK個の全単射写像f0〜fK-1を生成して写像の準備を行うと共に、原全単射写像“f0、f1・・・、fK-1”の逆写像“f0-1、f1-1 ・・・、fK-1-1”を生成し、また、エルゴード的な全単射写像“α“を用意する。そして、これら逆写像“f0-1、f1-1 ・・・、fK-1-1”とエルゴード的な全単射写像“α“を用いて乗算を行い、写像“Q”を作る。
【0052】
作成した写像“Q”は、処理に備えてメモリ102内のバッファに格納しておき、必要な周期においてステップS13において用いる。エルゴード的な全単射写像“α“は、写像の集合要素を単純にシフト(f(x)=(x+1)modN ただし、Nは集合の数)したものとすることができる。この場合、1周期毎にシフト量を変化させるなどして1周期毎に異なるαを作成し、これを用いて周期延長用全単射写像を準備するようにしても良い。1周期毎に異なるαを作成することは、図5のフローチャートにおいてステップS19で行うようにしても良い。
【0053】
図6のフローチャートにおいてステップS30以外では、図5のフローチャートにおける、周期延長用全単射写像を準備するか否かの判定を行うステップS18と周期延長用全単射写像を準備するステップS19の処理が削除される。また、ステップS20において、NOへ分岐するとステップS13へ戻って処理を続ける。これ以外は、図5において説明した処理と同様の処理が行われる。
【0054】
次に、写像関数を線形合同法の写像とした場合に行われる擬似乱数生成処理の一例を説明する。一般的に利用されている線形合同法の式は次の(式5)で与えられる。
【0055】
【数5】
【0056】
例としてM=7とした場合、a=2,c=0の時、全単射写像“f0”とすると
【0057】
【数6】
【0058】
上記(式6)による列は、初期値X0 =1のとき、
1,2,4を繰り返す周期長3の周期帯と、
初期値X0 =3のとき
3,6,5を繰り返す周期長3の周期帯との計2つの周期帯が存在する。
【0059】
a=5,c=0のとき、全単射写像“f1”とすると
【0060】
【数7】
【0061】
上記(式7)から
1,5,4,6,2,3の最大周期長6で循環する列が得られる。
2つの全単射写像“f0、f1”と、最大周期と一様性を実現する写像“Q”を用いて写像の列を作る。“f0、f1”の逆写像“f0-1、f1-1 ”と、ここでエルゴード的な全単射写像αは、次の通りである。
【0062】
【数8】
【0063】
このような全単射写像“α“と、上記逆写像“f0-1、f1-1 ”を用意して最大周期と一様性を実現する写像“Q”をQ=αf0-1f1-1により計算すると
【0064】
【数9】
【0065】
が得られ、“f0→f1→Q”の各初期値から得られる列は、図7のようになる。初期値が1の場合
1, 2, 3, 2, 4, 6, 3, 6, 2, 4, 1, 5, 5, 3, 1, 6, 5, 4
になり、最大周期長が3×6=18である、一様な出現頻度を満たす数列が得られる。
【0066】
次に、写像関数をM系列乱数で知られるGFSR(Generalized Feedbacked Shift Register)の写像とした場合に行われる擬似乱数生成処理の一例を説明する。GFSRの漸化式は(式8)の通りであり、ここでn=3,m=1の場合には、(式9)となる。
【0067】
【数10】
【0068】
これにより、周期長7(2n-1)の循環する数列が生成できる。GFSRの全単射写像を“f0”とすると、f0は次の(式10)となる。
【0069】
【数11】
【0070】
次に、“ f0” と最大周期と一様性を実現する写像“Q”を用いて写像の列を作る。なお、GFSRでは設定の自由度が初期値x0のみであり、数列のパターンは1つだけである。“f0”の逆写像“f0-1”と、ここでエルゴード的な全単射写像αは、次の通りである。
【0071】
【数12】
【0072】
このような全単射写像“α“と、上記逆写像“f0-1”を用意して最大周期と一様性を実現する写像 “Q”をQ=αf0-1により計算すると次のQが得られる。
【0073】
【数13】
【0074】
f0とQを用いて、“f0→Q”とする写像を繰り返し、各初期値から得られる数列は図8に示す通りとなる。初期値が1の場合
1, 4, 2, 5, 3, 1, 4, 2, 5, 6, 6, 7, 7, 3, 1
となり、最大周期長が2×7=14であり、一様な出現頻度を満たす数列が得られる。
【0075】
次に、写像関数をM系列乱数で知られるGFSRの改良版であるTGFSR(Twisted Generalized Feedbacked Shift Register)を含む写像とした場合に行われる擬似乱数生成処理の一例を説明する。TGFSRの漸化式は次の(式11)により表わされ、Aは次のような行列である。
【0076】
【数14】
【0077】
上記行列の最下行におけるベクトルaが最大周期を実現するものを選択すれば、周期は2nω-1になる。ここでn=2,m=1,ω=2の場合には、(式11)は次の(式12)の漸化式となるので、この漸化式を計算する。
【0078】
【数15】
【0079】
Aの行列を次の通りとして、全単射写像を計算すると、次の“f0”が得られる。
【0080】
【数16】
【0081】
上記“ f0”の写像は、
1,8,10,14,11,6の周期長6の列と
2,4,5,13,7,9の周期長6の列と
3,12,15の周期長3の列との、3つの短周期からなる周期帯を持つ。このため“f0”単独では最大周期が得られず、TGFSRとはならない。
【0082】
Aの行列を次の通りとして、全単射写像を計算すると“f1”が得られる。
【0083】
【数17】
上記“ f1”の写像では、
1, 12, 15, 7, 13, 3, 8, 10, 14, 11, 2, 4, 5, 9, 6
の最大周期を実現する周期長15の数列が得られる。“f1”はエルゴード的であり、TGFSRであるといえる。“f0”の逆写像“f0-1 ”と、“f1”の逆写像“f1-1 ”と、更に、ここでエルゴード的な全単射写像αとを次の通りに用意する。
【0084】
【数18】
【0085】
最大周期と一様性を実現する写像 “Q”をQ=αf0-1f1-1により計算すると、次のQが得られる。
【0086】
【数19】
【0087】
そして、“f0→f1→Q”の各初期値から得られる列は、図9に示す通りとなる。初期値が1の場合、
1, 8, 10, 2, 4, 5, 3, 12, 15, 4, 5, 9, 5, 13, 3, 6, 1, 12, 7, 9, 6, 8, 10, 14, 9, 2, 4, 10, 14, 11, 11, 6, 1, 12, 15, 7, 13, 7, 13, 14, 11, 2, 15, 3, 8
で循環し、最大周期長が3×15=45となり、一様な出現頻度を満たす数列が得られる。
【0088】
この設計において、一般に任意のn,ωでは全単射写像が2ω−1+1個存在する。従って、全単射写像の周期を最低でも2ω−1+1とすることができる。このとき、擬似乱数列の素周期は、(2ω−1+1)(2nω−1)となり、各値の出現頻度は一様に、2ω−1+1となる。例えば、ω=32,n=624のとき、素周期は(231+1)(219968−1)となり、同じ演算精度32ビットで、状態の次元が32×624であるメルセンヌツイスター19937の周期219937−1より、遥かに長い周期列が得られる。
【0089】
次に、写像関数を、一次元写像を用いた全単射族である変形テント写像とした場合に行われる擬似乱数生成処理の一例を説明する。演算精度Lビットとした時、演算幅N=2L−1で表した変形テント写像式は次の式の通りであり、変形テント写像のマップを図10に示す。
【0090】
【数20】
【0091】
上記変形テント写像式から用意できる全単射写像の数をKとすると、下記のように各写像“fM j”の全単射写像を用意できる。ここで、用意できる全単射写像の最大個数は、K≦Nである。また、逆写像“fM j−1”は次の通りとなる。
【0092】
【数21】
【0093】
更に、エルゴード的な全単射写像“α“を用意し、次式のように写像“Q”を作る計算を実行する。
【0094】
【数22】
【0095】
上記のように、用意したK個の写像“fM j“によってK回分の写像計算を行った後、写像“Q”を適応して、図11に示すようにサイクリックに写像を行う。このばあいにおいて、各全単射写像“fM j“の集合の要素数は演算精度のN+1であることから、素周期(N+1)(K+1)であり、各値はK+1回出現する。素周期長はK=Nの時(N+1)2であり、一様性が保証された擬似乱数列を得ることができる。
【符号の説明】
【0096】
11 初期値設定手段
12 全単射写像準備手段
13 写像値計算手段
14 ビット列抽出手段
15 擬似乱数出力手段
100 コンピュータシステム
102 メモリ
103 入力部
104 出力部
【特許請求の範囲】
【請求項1】
擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段と、
この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段と、
前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段と、
前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段と、
前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段と
を具備することを特徴とする擬似乱数生成装置。
【請求項2】
全単射写像準備手段は、写像関数として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを用いることを特徴とする請求項1に記載の擬似乱数生成装置。
【請求項3】
全単射写像準備手段は、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備することを特徴とする請求項1または2に記載の擬似乱数生成装置。
【請求項4】
全単射写像準備手段は、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備することを特徴とする請求項1乃至3のいずれか1項に記載の擬似乱数生成装置。
【請求項5】
全単射写像準備手段は、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備することを特徴とする請求項1乃至3のいずれか1項に記載の擬似乱数生成装置。
【請求項6】
擬似乱数を生成するコンピュータを、
擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段、
この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段、
前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段、
前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段、
前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段
として機能させる擬似乱数生成用プログラム。
【請求項7】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを写像関数として用いるように機能させることを特徴とする請求項6に記載の擬似乱数生成用プログラム。
【請求項8】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備するように機能させることを特徴とする請求項6または7に記載の擬似乱数生成装置。
【請求項9】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備するように機能させることを特徴とする請求項6乃至8のいずれか1項に記載の擬似乱数生成用プログラム。
【請求項10】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備するように機能させることを特徴とする請求項6乃至8のいずれか1項に記載の擬似乱数生成用プログラム。
【請求項1】
擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段と、
この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段と、
前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段と、
前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段と、
前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段と
を具備することを特徴とする擬似乱数生成装置。
【請求項2】
全単射写像準備手段は、写像関数として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを用いることを特徴とする請求項1に記載の擬似乱数生成装置。
【請求項3】
全単射写像準備手段は、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備することを特徴とする請求項1または2に記載の擬似乱数生成装置。
【請求項4】
全単射写像準備手段は、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備することを特徴とする請求項1乃至3のいずれか1項に記載の擬似乱数生成装置。
【請求項5】
全単射写像準備手段は、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備することを特徴とする請求項1乃至3のいずれか1項に記載の擬似乱数生成装置。
【請求項6】
擬似乱数を生成するコンピュータを、
擬似乱数の生成に必要な写像関数と擬似乱数のビット長の初期値を設定する初期値設定手段、
この初期値設定手段により設定された写像関数を用いて、少なくとも1つの原全単射写像と、前記原全単射写像の逆写像と前記原全単射写像についてエルゴード的な全単射写像との写像計算により得られる周期延長用全単射写像と、を準備する全単射写像準備手段、
前記全単射写像準備手段により準備された、前記原全単射写像を一度ずつ用いて写像値を得た後に更に前記周期延長用全単射写像を用いて写像値を得る処理を繰り返す写像値計算手段、
前記写像値計算手段により得られた写像値からビット列を抽出するビット列抽出手段、
前記ビット列抽出手段によって抽出されたビット列を前記初期値設定手段により設定されたビット長となるまで出力する擬似乱数出力手段
として機能させる擬似乱数生成用プログラム。
【請求項7】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、線形合同法による写像、M系列乱数による写像、変形テント関数による写像、或いは前記以外の手法により作成した全単射写像のいずれかを写像関数として用いるように機能させることを特徴とする請求項6に記載の擬似乱数生成用プログラム。
【請求項8】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、準備した全単射写像の数と全単射写像に含まれる集合の数の乗算により決まる周期毎に、エルゴード的な全単射写像を変更した新たな周期延長用全単射写像を準備するように機能させることを特徴とする請求項6または7に記載の擬似乱数生成装置。
【請求項9】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、準備した原全単射写像数の全単射写像がなされた場合に周期延長用全単射写像を準備するように機能させることを特徴とする請求項6乃至8のいずれか1項に記載の擬似乱数生成用プログラム。
【請求項10】
擬似乱数を生成するコンピュータを、
全単射写像準備手段として、全単射写像数の全単射写像がなされる前に予め周期延長用全単射写像を準備するように機能させることを特徴とする請求項6乃至8のいずれか1項に記載の擬似乱数生成用プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−145464(P2011−145464A)
【公開日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願番号】特願2010−5823(P2010−5823)
【出願日】平成22年1月14日(2010.1.14)
【出願人】(899000057)学校法人日本大学 (650)
【出願人】(391016358)東芝情報システム株式会社 (149)
【Fターム(参考)】
【公開日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願日】平成22年1月14日(2010.1.14)
【出願人】(899000057)学校法人日本大学 (650)
【出願人】(391016358)東芝情報システム株式会社 (149)
【Fターム(参考)】
[ Back to top ]