(57)【特許請求の範囲】
【請求項１】
時間軸方向に規則性のない物理量を発生する物理量発生手段と、前記物理量を２ビット以上の第１のディジタルデータに変換するデータ変換手段と、前記第１のディジタルデータの少なくとも一部を乱数データとして外部に出力する外部出力インタフェースと、を含む乱数生成装置であって、
０と１が不規則に変化しながら均等な比率で現れる反転トリガ信号を生成する反転トリガ信号生成手段と、
前記データ変換手段と前記外部出力インタフェースとの間に設けられ、前記第１のディジタルデータの少なくとも一部のビットと、前記反転トリガ信号との排他的論理和をとり、前記第１のディジタルデータの代わりに第２のディジタルデータとして前記外部出力インタフェースに出力するデータ反転手段と、を含み、
前記反転トリガ信号生成手段は、任意の乱数発生手段から時系列に入力されるディジタルの乱数データと、自身の出力との排他的論理和をとり、前記反転トリガ信号として出力する反転トリガ更新論理と、前記反転トリガ更新論理から出力される前記反転トリガ信号をクロック信号に同期してラッチして前記データ反転手段および前記反転トリガ更新論理に出力する反転トリガ信号ラッチ手段とを含むことを特徴とする乱数生成装置。
【請求項２】
請求項１記載の乱数生成装置において、
前記反転トリガ信号生成手段の前記反転トリガ更新論理に入力される前記乱数データとして、前記第１のディジタルデータの一部を用いることを特徴とする乱数生成装置。
【請求項３】
請求項１記載の乱数生成装置において、
前記物理量発生手段および前記データ変換手段の組み合わせを、ディジタルデータを前記データ反転手段に入力する組と、前記ディジタルデータを前記乱数データとして前記反転トリガ信号生成手段の前記反転トリガ更新論理に入力する組の２系統設けることを特徴とする乱数生成装置。
【請求項４】
請求項１記載の乱数生成装置において、
前記物理量発生手段および前記データ変換手段の組み合わせを、ディジタルデータを前記データ反転手段に入力する組と、前記ディジタルデータを前記乱数データとして前記反転トリガ信号生成手段の前記反転トリガ更新論理に入力する組の２系統設け、前記反転トリガ更新論理に前記乱数データとして入力される前記ディジタルデータとして、互いに他の前記ディジタルデータを用いることを特徴とする乱数生成装置。
【請求項５】
請求項１記載の乱数生成装置において、
前記反転トリガ更新論理に入力される前記乱数データとして、ソフトウェア生成乱数を用いることを特徴とする乱数生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、乱数生成技術に関し、特に、ハードウェアによって乱数を生成する場合における生成過程の高速化および高い乱数性の実現等に好適な乱数生成技術に関する。
【０００２】
【従来の技術】
乱数は、様々なシミュレーションにおける不確定要素や、無作為抽出のための選択手段、暗号化技術の鍵生成などの分野で利用される。たとえば、風洞実験のシミュレーションで与える風は均質な物でなく、風向、風速、圧力などいくつものパラメータに不確定さが必要になる。また、数学の世界では、モンテカルロ法など乱数を計算に使用する。こうした乱数に、多くはソフトウェア生成の乱数が用いられている。
【０００３】
しかし、ソフトウェア乱数は疑似乱数と呼ばれるように、出力した乱数列に一定の規則性があり、結果に誤った指向性が出たり、結果の収束に影響したりすることがある。
【０００４】
ハードウェア生成による乱数は、乱数源にランダム性があり、時間方向に規則性の無い物理現象を選ぶことによって、ソフトウェア乱数の様な規則性を無くすことができる。たとえば、仁木直人「工学的乱数発生」統計数理研究所彙報  第２７巻  第１号  １９８０  １１５−１３１、等の文献にも記載されているように、過去のハードウェア乱数生成の乱数源に選ばれたランダム性のある物理現象には、コバルト−６０の放射線量、セシウム−１３７の崩壊によるガンマ線放射、トランジスタの熱雑音、ダイオードの熱雑音、ネオン放電管からの雑音等がある。
【０００５】
乱数への加工方法として２種類の例を示す。ひとつは、前記の放射線量や、ノイズをパルス化したものを、一定時間計数した結果が偶数であるか奇数であるかで２進１桁乱数を生成する方法である。もうひとつは、ランダム性のある物理現象のうちノイズが得られるものを利用し、得られたノイズをアナログ・デジタル変換し、出力の何桁かを乱数として利用する方法である。後者の例として、特開平６−３１４１８８号公報の技術では、導線上のノイズをアナログ・デジタル変換し、乱数を生成している。
【０００６】
【発明が解決しようとする課題】
２進乱数の乱数性の評価の尺度には、
（１）０と１の出現する比率が等しいこと、
（２）ある桁の０と１の出現する比率が、前に出現した別の桁のパターンに左右されないこと、
がある。
【０００７】
本明細書の中で（１）は「０と１の出現比率が等しい」、（２）は「乱数列の規則性が無い」と表現する。（２）について例を挙げると、００と続いた後の０と１の出現する比率が１：３となる場合「規則性がある」わけで、それだけ「乱数性が悪い」となる。（１）（２）はいずれも統計的な評価のため、評価対象の母集団が大きいほど正しく評価でき、母集団が小さいケースでは常に成り立つものでは無い。
【０００８】
従来の技術で説明した、一定時間におけるある物理現象を計数することによる乱数生成装置は、計数した値が充分大きくなる時間を必要とする。極端な例を挙げると、一定時間計数した結果が０から１程度だとして、ほとんどの場合０だとすると偶数と奇数の出現比率が著しく不均等なために、出力する乱数に指向性が出てしまう。たとえば１００を中心に５０から１５０の値を計数できるような、充分大きく、充分ばらつきのある値が計数できる時間を取れば、偶数と奇数の出現比率の不均衡が無視できる様になる。しかし、出現比率の差を小さくするために計数時間を大きくとれば、乱数の生成速度は反比例して遅くなる。前述した１００を中心に５０から１５０の値を計時できるような時間をとると、理論上回路の動作周波数の１／１５０以下、おそらくは１／２００から１／３００程度の乱数生成速度しか得られない。
【０００９】
従来の技術で説明したもう一方の、ランダム性のあるノイズをアナログ・デジタル変換し、出力の何桁かを乱数として利用する方法では、アナログ・デジタル変換機構の回路上のくせによって各桁の０と１の出現比率が均等にならない場合が考えられる。ノイズをアナログ・デジタル変換する方法では物理現象を計数する方法に比べて、回路の動作周波数とほぼ同等の乱数生成速度を得ることができる。しかし、回路内の主にアナログ・デジタル変換機構内部の信号が０から１、１から０に変化する速さの違いやスレッショールド電圧の違いを始め、ノイズ源のダイオードから誘導される電源線、接地線、信号線へのノイズなど、回路特有のくせにより、実際のノイズの電圧値とアナログ・デジタル変換機構が出力するデジタル・データの値に誤差が生じる。たとえば、変換前のノイズがｘからｘ＋１の中間の電圧であった場合に、アナログ・デジタル変換機構の出力する結果がｘよりｘ＋１を出力する確率が多いと、出力する各桁の０と１の出現比率に偏りが生じてしまい、これを乱数とすると０と１の出現比率に偏りがある乱数になる。回路のくせは、回路を構成する素子の特性、温度、供給電圧、動作周波数など、様々な条件に左右され、回路の改善で偏りを無くすことは困難である。
【００１０】
本発明の目的は、ハードウェアによって乱数列を生成する乱数生成技術において、高速な乱数生成速度と、乱数列に規則性が無く、均質な０と１の出現比率を同時に実現することにある。
【００１１】
【課題を解決するための手段】
本発明では、物理量発生手段から得られる時間軸方向に規則性のない物理量をディジタル量に変換するアナログ・デジタル変換機構の出力するデジタル・データのあるビット（以下、素乱数と呼ぶ）を、反転トリガ信号と排他的論理和を取って乱数とする。反転トリガ信号は、０と１の出現比率が１：１となり、できるだけ規則性の無いものを生成する。この方法により、乱数として０を出力する場合に、アナログ・デジタル変換機構が０を出力している場合と１を出力している場合とどちらの場合もあり、乱数として１を出力する場合も同じくアナログ・デジタル変換機構が０を出力している場合と１を出力している場合とどちらの場合もあるため、アナログ・デジタル変換機構の回路の特有のくせが出力に与える影響を無くすことができる。
【００１２】
また、反転トリガ信号に規則性がある場合にも、出力した乱数列の規則性は改善される。反転トリガ信号の規則性を、０が出現した後に０と１が出現する確率をａ：１−ａ（０＜ａ＜１）とすると、０と１の出現比率が１：１なので、１が出現した後の０と１が出現する確率は１−ａ：ａとなる。素乱数の０と１の出現比率の偏りも簡単のため、同じくａ：１−ａとして、ａの値が0.５からずれた場合、出力する乱数列の規則性にどの程度の影響が出るか計算してみる。出力する乱数列の規則性は、前記の表現と同じように０が出現した後の０と１が出現する確率をｂ：１−ｂ、１の出現した後の０と１の出現する確率を１−ｂ：ｂと表現する。すると、
【００１３】
【数１】
0003680091.tif 000002
【００１４】
となる。実際ａが0.５近辺の値を取った場合、ｂはどうなるか計算して図７に示す。
【００１５】
ａ、ｂの0.５との差分と0.５との比率を以下では、乱数の偏差と表現することとする。図７を見ると分かるように、素乱数の偏差が１％の場合で、出力した乱数の偏差は１０-6と非常に小さくできる。
【００１６】
本発明で採用している反転トリガ信号生成機構は、反転トリガ信号生成機構に入力する素乱数が１の時に同期して反転トリガ信号を０から１又は１から０へ切り替え、素乱数が０の時は反転トリガ信号を変化させない。素乱数の乱数列には規則性が無いため、生成した反転トリガ信号は０と１の出現比率は理論上均等になる。図６は、素乱数２１とこの素乱数２１を元に生成した反転トリガ信号２２の関係の一例を信号の波形で表している。信号の波形が上にある時の信号の値が１を表し、信号の波形が下にある時の信号の値が０を表す。素乱数２１は０の出現比率が高いが、反転トリガ信号２２は０と１の出現比率はほぼ等しくなっているのがわかる。
【００１７】
反転トリガ信号の規則性は、素乱数の偏差と同程度の影響がある。なぜなら、規則性の一つである０の後１になる確率、１の後０になる確率は、素乱数の１が出現する確率に等しいからである。しかし、後述する実施の形態で見てみた場合、うまく回路を構成することによって、アナログ・デジタル変換機構の出力のうち、偏差が１〜２％程度の素乱数を得ることが可能であり、前述したように、この程度の偏差が出力の偏差に与える影響は非常に小さくできる。また、規則性が存在するソフトウェア乱数と組み合わせて乱数を生成しても、乱数性の高い乱数が得られる。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら詳細に説明する。
【００１９】
図１は、本発明の一実施の形態である乱数生成装置の構成の一例を示す概念図である。本実施の形態の乱数生成装置は、経時的に不規則なノイズ１８Ａを発生するダイオード１０Ａ、ノイズ１８Ａを素乱数１６Ａ〜１６Ｄのディジタルデータに変換するアナログ・デジタル変換機構１２Ａ、反転トリガ信号１７Ａ〜１７Ｄを生成する反転トリガ信号生成機構１４、アナログ・デジタル変換機構１２Ａおよび反転トリガ信号生成機構１４にクロック信号１９を供給するクロック発生機構１１、乱数を使用する外部の任意の情報処理装置等との間のインタフェースを提供する乱数データまとめ部１５、を含んでいる。
【００２０】
すなわち、ダイオード１０Ａが出力するノイズ１８Ａをアナログ・デジタル変換機構１２Ａに入力する。アナログ・デジタル変換機構１２Ａの出力する素乱数のうちの素乱数１６Ａ〜１６Ｄを反転機構１３Ａ〜１３Ｂのデータ入力に、反転トリガ信号生成機構１４の出力する反転トリガ信号１７Ａ〜１７Ｂは、反転機構１３Ａ〜１３Ｂの反転トリガ入力に接続する。反転機構の１３Ａの出力は、乱数データまとめ部１５に接続する。
【００２１】
このような構成の本実施の形態の乱数生成装置の動作としては、まず、アナログ・デジタル変換機構１２Ａは、クロック信号１９に同期して、ノイズ１８Ａの電圧をデジタル・データに変換する。このデジタル・データから素乱数１６Ａ〜１６Ｄを取り出す。反転機構１３Ａ〜１３Ｂは、素乱数１６Ａ〜１６Ｄと反転トリガ信号生成機構１４の出力する反転トリガ信号１７Ａ〜１７Ｂの排他的論理和を出力し、乱数データまとめ部１５に送る。乱数データまとめ部１５は、外部からの要求でデータを取り出しやすいように加工し、２進乱数データ１５ａとして出力する。素乱数のビット数と反転機構の数は同じだが、反転トリガ信号はそれと異なっても構わない。
【００２２】
図２は、前述の図１に例示された乱数生成装置のより具体的な変形例を示す概念図である。すなわち、この図２の構成例は、図１の反転トリガ信号生成機構１４の実現方法の一つを提示している。
【００２３】
この図２の構成では、反転トリガ信号生成機構１４は、複数の反転トリガ信号更新論理１４０Ａ〜１４０Ｂおよび反転トリガ信号レジスタ１４１Ａ〜１４１Ｂを含んでいる。そして、アナログ・デジタル変換機構１２Ａの出力する素乱数のうち反転機構１３Ａ〜１３Ｂに直接送られなかった素乱数１６Ｅ〜１６Ｆを、それぞれ反転トリガ信号生成機構１４内の反転トリガ信号更新論理１４０Ａ〜１４０Ｂに接続する。反転トリガ信号更新論理１４０Ａ〜１４０Ｂの出力はそれぞれ反転トリガ信号レジスタ１４１Ａ〜１４１Ｂに接続し、反転トリガ信号レジスタ１４１Ａ〜１４１Ｂの出力する反転トリガ信号１７Ａ〜１７Ｂは、反転機構１３Ａ〜１３Ｂのいずれかの反転トリガ入力と、それぞれ反転トリガ信号更新論理１４０Ａ〜１４０Ｂに接続する。
【００２４】
この図２の変形例の動作としては、反転トリガ信号更新論理１４０Ａは、反転トリガ信号１７Ａと素乱数１６Ｅの排他的論理和を出力する。反転トリガ信号レジスタ１４１Ａは、クロック信号１９に同期して、保持する値を反転トリガ信号更新論理１４０Ａの出力に置き換える。反転トリガ信号更新論理１４０Ｂと反転トリガ信号１７Ｂ、素乱数１６Ｆ、反転トリガ信号レジスタ１４１Ｂの動作も同様である。このようにして、反転トリガ信号１７Ａ、１７Ｂを生成する以外は図１の説明と同様である。
【００２５】
図３は、本発明の他の実施の形態である乱数生成装置の構成の一例を示す概念図である。この図３の構成の場合、アナログ・デジタル変換機構１２Ａは８ビット出力のものとし、アナログ・デジタル変換機構１２Ａの出力する８個の素乱数のうち１個の素乱数１６Ａを１個の反転機構１３Ａのデータ入力に、別の１個の素乱数１６Ｂを反転トリガ信号生成機構１４内の１個の反転トリガ信号更新論理１４０Ａに接続する。反転トリガ信号更新論理１４０Ａの出力は反転トリガ信号レジスタ１４１Ａに接続し、反転トリガ信号レジスタ１４１Ａの出力する反転トリガ信号１７Ａは、反転機構１３Ａの反転トリガ入力と、反転トリガ信号更新論理１４０Ａの入力側に接続する。
【００２６】
反転機構１３Ａの出力は、乱数データまとめ部１５内のシフト・レジスタ１５０に接続し、シフト・レジスタ１５０の出力は、乱数データまとめ部１５内の乱数データ・バッファ１５２に接続する。乱数データまとめ部１５内のデータまとめ部制御論理１５１の出力は、乱数データ・バッファ１５２に接続する。クロック発生機構１１が出力するクロック信号１９は、アナログ・デジタル変換機構１２Ａと、反転トリガ信号レジスタ１４１Ａと、シフト・レジスタ１５０と、データまとめ部制御論理１５１に接続する。
【００２７】
この図３の構成の乱数生成装置の動作としては、まず、アナログ・デジタル変換機構１２Ａは、クロック信号１９に同期して、ノイズ１８Ａの電圧を８ビットのデジタル・データに変換する。このデジタル・データから２個の素乱数１６Ａと１６Ｂを取り出す。反転トリガ信号更新論理１４０Ａは、反転トリガ信号１７Ａと素乱数１６Ｂの排他的論理和を出力する。反転トリガ信号レジスタ１４１Ａは、クロック信号１９に同期して、保持する値を反転トリガ信号更新論理１４０Ａの出力に置き換える。反転機構１３Ａは、素乱数１６Ａと反転トリガ信号１７Ａの排他的論理和を出力し、シフト・レジスタ１５０に入力する。シフト・レジスタ１５０は、８ビットのシフト・レジスタで、クロック信号１９に同期してシフト動作と、反転機構１３Ａの出力の取り込みを行う。シフト・レジスタ１５０は、８ビット幅の出力を乱数データ・バッファ１５２に送り、データまとめ部制御論理１５１は、クロック信号１９に同期して、８サイクルに１回、乱数データ・バッファ１５２に書き込み指示を行う。乱数データ・バッファ１５２は、書き込み指示を受けた時のシフト・レジスタ１５０からのデータ（２進乱数データ１５ａ）を記憶する。また乱数データ・バッファ１５２は、外部からの読み出し要求に対して、２進乱数データ１５ａの書き出しと、書き出した２進乱数データ１５ａの消去を行う機能と、たとえばＰＣＩ等の汎用バス等に対する接続インターフェースを有し、８ビットの乱数データ（２進乱数データ１５ａ）を外部の任意の装置等に供給することができる。
【００２８】
図４は本発明の他の実施の形態である乱数生成装置の構成の一例を示す概念図である。この図４の構成では、反転トリガ信号生成機構１４に対する素乱数の入力手段として専用のダイオード１０Ｂおよびアナログ・デジタル変換機構１２Ｂを設けた構成となっている。
【００２９】
すなわち、反転機構１３Ａ〜１３Ｂに接続する素乱数１６Ａ〜１６Ｂに、ダイオード１０Ａが出力するノイズ１８Ａをアナログ・デジタル変換機構１２Ａがアナログ・デジタル変換した出力を用い、反転トリガ信号生成機構１４内の反転トリガ信号更新論理１４０Ａ〜１４０Ｂに接続する素乱数１６Ｅ〜１６Ｆに、ダイオード１０Ｂが出力するノイズ１８Ｂをアナログ・デジタル変換機構１２Ｂがアナログ・デジタル変換した出力を用いている。
【００３０】
この図４の構成では、複数のダイオード１０Ａおよび１０Ｂと、アナログ・デジタル変換機構１２Ａおよび１２Ｂの組合せを２系統用意したことにより、複数の反転機構１３Ａおよび１３Ｂに入力される素乱数１６Ａおよび１６Ｂと、反転トリガ信号１７Ａおよび１７Ｂとの間の相関を無くすことが可能となり、最終的に乱数データまとめ部１５から出力される２進乱数データ１５ａにおいてより高い乱数性を実現することができる。
【００３１】
図５は、図４に例示した本発明の乱数生成装置の変形例を示す概念図である。この図５の構成では、ダイオード１０Ａおよびアナログ・デジタル変換機構１２Ａと、ダイオード１０Ｂおよびアナログ・デジタル変換機構１２Ｂ、の２系列の素乱数１６Ａ、素乱数１６Ｂ、および素乱数１６Ｇ、素乱数１６Ｈ、に対して、対応した反転機構１３Ａ、１３Ｂおよび反転機構１３Ｃ、１３Ｄを設けるとともに、反転機構１３Ａ、１３Ｂおよび反転機構１３Ｃ、１３Ｄの各々に対する反転トリガ信号１７Ａおよび反転トリガ信号１７Ｂが、互いに他方のアナログ・デジタル変換機構１２Ｂおよび１２Ａから発生された素乱数１６Ｅおよび素乱数１６Ｊにてクロスして生成される構成としたものである。
【００３２】
すなわち、ダイオード１０Ａが出力するノイズ１８Ａを８ビット出力のアナログ・デジタル変換機構１２Ａに入力する。ダイオード１０Ｂが出力するノイズ１８Ｂを８ビット出力のアナログ・デジタル変換機構１２Ｂに入力する。アナログ・デジタル変換機構１２Ａの出力する８個の素乱数のうち１個の素乱数１６Ａを反転機構１３Ａのデータ入力に、１個の素乱数１６Ｂを反転機構１３Ｂのデータ入力に、１個の素乱数１６Ｃを反転トリガ信号生成機構１４内の反転トリガ信号更新論理１４０Ｂに接続する。アナログ・デジタル変換機構１２Ｂの出力する８個の素乱数のうち１個の素乱数１６Ｇを反転機構１３Ｃのデータ入力に、１個の素乱数１６Ｈを反転機構１３Ｄのデータ入力に、１桁の素乱数１６Ｊを反転トリガ信号生成機構１４内の反転トリガ信号更新論理１４０Ａに接続する。反転トリガ信号更新論理１４０Ａの出力は反転トリガ信号レジスタ１４１Ａに接続し、反転トリガ信号レジスタ１４１Ａの出力する反転トリガ信号１７Ａは、反転機構１３Ａ、１３Ｂの反転トリガ入力と、反転トリガ信号更新論理１４０Ａの入力側に接続する。反転トリガ信号更新論理１４０Ｂの出力は反転トリガ信号レジスタ１４１Ｂに接続し、反転トリガ信号レジスタ１４１Ｂの出力する反転トリガ信号１７Ｂは、反転機構１３Ｃ、１３Ｄの反転トリガ入力と、反転トリガ信号更新論理１４０Ｂに接続する。反転機構の１３Ａ、１３Ｂ、１３Ｃ、１３Ｄの出力は、乱数データまとめ部１５に接続する。クロック発生機構１１が出力するクロック信号１９は、アナログ・デジタル変換機構１２Ａ、１２Ｂと、反転トリガ信号レジスタ１４１Ａ、１４１Ｂと、乱数データまとめ部１５に接続する。前述の図３の実施の形態と異なるのは、
（１）ダイオードとアナログ・デジタル変換機構が２個ずつあること、
（２）１個のアナログ・デジタル変換機構に対して、２個の反転機構を備え、２個の素乱数を１個ずつ、それぞれの反転機構に入力していること、
（３）アナログ・デジタル変換機構１２Ａの出力する素乱数１６Ａ、１６Ｂの接続する、反転機構１３Ａ、１３Ｂに入力する反転トリガ信号１７Ａは、もう一方のアナログ・デジタル変換機構１２Ｂの出力する素乱数１６Ｊを利用して更新し、アナログ・デジタル変換機構１２Ｂの出力する素乱数１６Ｇ、１６Ｈの接続する、反転機構１３Ｃ、１３Ｄに入力する反転トリガ信号１７Ｂは、もう一方のアナログ・デジタル変換機構１２Ａの出力する素乱数１６Ｅを利用して更新していること、
である。
【００３３】
乱数データまとめ部１５内では図３の実施の形態と同じように、外からの読み出し要求に応答できるようにデータの形を整え記憶する。本実施の形態では、ダイオードから乱数データまとめ部１５の前までの回路を倍にし、利用する素乱数も倍にして乱数生成速度の性能を向上し、しかも反転トリガ信号１７Ａ、反転トリガ信号１７Ｂを更新するための素乱数１６Ｊ、１６Ｅを交換しあうことで、素乱数１６Ａ、１６Ｂおよび素乱数１６Ｇ、１６Ｈと、反転トリガ信号１７Ａ、１７Ｂを別系統の乱数源から生成するため、反転機構１３Ａ、１３Ｂおよび反転機構１３Ｃ、１３Ｄのデータ入力（素乱数１６Ａ、１６Ｂおよび素乱数１６Ｇ、１６Ｈ）、反転トリガ信号１７Ａ、１７Ｂの間の予期せぬ相関から規則性が生じることを回避している。
【００３４】
なお、上述の図２〜図５における乱数生成装置の構成例では、反転トリガ信号生成機構１４において反転トリガ信号１７Ａ、１７Ｂ等を生成するための素乱数は、ダイオード１０Ａ、１０Ｂおよびアナログ・デジタル変換機構１２Ａ、１２Ｂ等を用いてハードウェア的に得られた素乱数を用いているが、これに限らず、図８に例示されるように、ソフトウェア乱数生成装置３０において、たとえばＭ系列法、合同式法等の所望のアルゴリズムを用いたソフトウェアにて生成されたソフトウェア素乱数３０ａを、素乱数１６Ｂ、１６Ｅ、１６Ｆ、１６Ｊ、等の代わりに用いても、同様に、得られる２進乱数データ１５ａの生成速度が高速で、乱数列に規則性が無く、均質な０と１の出現比率を同時に実現することが可能になる。この場合、ソフトウェア乱数生成装置３０は、たとえば図示しないマイクロプロセッサや、乱数を生成するためのソフトウェア等が格納されるＲＯＭ、ＲＡＭ等を備えた一般的に情報処理装置で構成することができる。
【００３５】
さらに、図９のフローチャートに例示されるように、反転トリガ信号生成機構１４および反転機構１３Ａ〜１３Ｄ等で行われる素乱数１６Ａ、１６Ｂ、１６Ｈ、１６Ｇ等の反転処理を、当該素乱数１６Ａ〜１６Ｇを利用する任意の情報処理装置の内部で、ソフトウェア的に行わせることもできる。この場合、物理現象を利用する乱数発生機構としては、本発明の上述の実施の形態で例示したダイオード１０Ａ、アナログ・デジタル変換機構１２Ａ、乱数データまとめ部１５等で構成された、素乱数１６Ａ等をそのまま外部に出力する構成の物理乱数生成装置を用いることができる。
【００３６】
すなわち、任意の情報処理装置において、物理乱数生成装置から得られる素乱数１６Ａを用いるプログラムでは、前処理として、図９のフローチャートに例示された以下のような処理を行うことで乱数性の向上を達成することができる。
【００３７】
すなわち、まず、物理乱数生成装置から得られた素乱数１６Ａ（２進ハードウェア乱数）を、整数変数ＨＲに格納する（ステップ２０１）。
【００３８】
次に、自前のソフトウェアによる乱数発生ルーチンから２進ソフトウェア乱数を生成して整数変数ＳＲに格納する（ステップ２０２）。
【００３９】
整数変数ＳＲの各ビットを指定するためのビット指標変数ｎを０に初期化する（ステップ２０３）。だだし、ＳＲ〔ｎ＝０〕はＬＳＢを示す。
【００４０】
次に、ＳＲのＬＳＢ（ＳＲ〔ｎ＝０〕）を“０”との排他的論理和をとって更新する（ステップ２０４）。
【００４１】
その後、ビット指標変数ｎをインクリメントして（ステップ２０５）、ビット位置がＳＲのＭＳＢを越えたか否かを判定（ステップ２０６）しながら、ＳＲのＭＳＢ方向に隣接する第ｎビットと第ｎ−１ビットとの排他的論理和をとって当該第ｎビット位置のビット値を更新する（ステップ２０７）操作を、ＭＳＢまで反復し、このステップ２０７の操作が終わったら、整数変数ＨＲに格納された２進ハードウェア乱数と、整数変数ＳＲに格納された反転操作後の２進ソフトウェア乱数との間で各ビット毎の排他的論理和をとり、結果を整数変数ＨＲに書き戻す処理（ステップ２０８）、を行う。
【００４２】
これにより、整数変数ＨＲ内には、結果として、図１の乱数データまとめ部１５から得られる２進乱数データ１５ａと同様に、乱数列に規則性が無く、均質な０と１の出現比率を持つ、２進ハードウェア乱数が得られる。
【００４３】
この場合には、ソフトウェア的にビット反転処理を行うため、多少、生成速度は犠牲になるが、素乱数１６Ａを供給する物理乱数生成装置は任意のものを用いることができ、物理乱数を利用する情報処理装置のソフトウェアの側のわずかな変更で、高い乱数性を持つ物理乱数を使用できるようになる、という利点がある。また、生成速度の点も、物理乱数を利用する情報処理装置の実行速度が改善されれば問題にならなくなり、乱数生成の高速性の要求も満たされる。
【００４４】
以上説明したように、本実施の形態の乱数生成装置では、ハードウェアによる高速な生成速度の乱数生成処理において、０と１の出現比率については均等にでき、素乱数の偏差が最終的に出力される乱数の規則性へ与える影響を少なくすることができる。図７で示したとおり、乱数列の規則性の偏りは、素乱数の０と１の出現比率の偏りが２％の場合で１０-5以下、１％で１０-6に改善することができる。
【００４５】
本発明の特許請求の範囲に記載された以外のの特徴を列挙すれば以下の通りである。
【００４６】
＜１＞  ノイズ源としてのダイオードと、アナログ・デジタル変換機構と、乱数データまとめ部と、クロック発生機構を有し、クロック発生機構が発生するクロック信号を、前記アナログ・デジタル変換機構に接続し、前記ダイオードに逆バイアスをかけた場合のツェナー降伏領域もしくはアバランシェ領域で発生するノイズの電圧を、前記アナログ・デジタル変換機構で前記クロックに同期してｎビット（ｎ＞１）のデジタル・データに変換し、該デジタル・データのうちｍビット（１≦ｍ≦ｎ）を乱数データまとめ部で乱数として利用できる形にまとめる乱数生成装置において、
データ入力と反転トリガ入力の２個の入力を持つｍ個の反転機構と、反転トリガ信号生成機構を備え、該反転トリガ信号生成機構は、０と１が変化しながらほぼ同じ比率で現れる反転トリガ信号をｓ個（１≦ｓ≦ｍ）生成し、該ｓ個の反転トリガ信号を、合計ｍ個全ての前記反転機構の反転トリガ入力に１対１もしくは１対多で接続し、前記乱数データまとめ部に送られる直前のｍビットのデジタル・データを該ｍ個の反転機構のデータ入力に１対１で接続し、該ｍ個の反転機構はデータ入力と反転トリガ入力の排他的論理和を出力し、該出力を、前記アナログ・デジタル変換機構が出力したｍ桁のデジタル・データの代わりに前記乱数データまとめ部に送ることを特徴とする乱数生成装置。
【００４７】
＜２＞  反転トリガ信号を保持するｓ個の反転トリガ信号レジスタと、ｓ個の反転トリガ信号更新論理を有し、
前記アナログ・デジタル変換機構の出力するデジタル・データのうちｓビットをｓ個の該反転トリガ信号更新論理全てに１対１で接続し、該反転トリガ信号更新論理は対応する反転トリガ信号レジスタが保持する反転トリガ信号と前記入力されたデジタル・データとの排他的論理和を出力し、前記反転トリガ信号レジスタに前記クロックを接続し、該反転トリガ信号レジスタが保持している反転トリガ信号を、クロックに同期して前記反転トリガ信号更新論理の出力に置き換え、該反転トリガ信号レジスタの保持している反転トリガ信号を出力することを特徴とする反転トリガ信号生成機構を備える項目＜１＞記載の乱数生成装置。
【００４８】
＜３＞  プログラム生成乱数を前記反転トリガ信号として出力する反転トリガ信号生成機構を有する、項目＜１＞記載の乱数生成装置。
【００４９】
＜４＞  前記ダイオードと前記アナログ・デジタル変換機構の組み合わせを、前記反転機構のデータ入力に接続するものと、前記反転トリガ信号更新論理に接続するものを独立して２系統用意することを特徴とする項目＜２＞記載の乱数生成装置。
【００５０】
＜５＞  前記ダイオードと前記アナログ・デジタル変換機構と反転機構の組み合わせを２系統有し、該反転機構の出力を別の反転機構のデータ入力と反転トリガ入力に接続することを特徴とする項目＜１＞記載の乱数生成装置。
【００５１】
＜６＞  時間軸方向に不規則な物理量から２値の素乱数を生成するステップと、
０と１が変化しながらほぼ同じ比率で現れる反転トリガ信号を生成するステップと、
前記素乱数と前記反転トリガ信号との排他的論理和をとって２進乱数として出力するステップと、
を含むことを特徴とする乱数生成方法。
【００５２】
以上本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００５３】
たとえば、物理量発生手段としては、上述の実施の形態に例示したダイオードに限らず、時間軸方向に不規則な物理量を出力する一般の機器を広く用いることができる。
【００５４】
【発明の効果】
本発明の乱数生成装置によれば、ハードウェアによって乱数列を生成する乱数生成技術において、高速な乱数生成速度と、乱数列に規則性が無く、均質な０と１の出現比率を同時に実現することができる、という効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施の形態である乱数生成装置の構成の一例を示す概念図である。
【図２】図１に例示された乱数生成装置のより具体的な変形例を示す概念図である。
【図３】本発明の他の実施の形態である乱数生成装置の構成の一例を示す概念図である。
【図４】本発明の他の実施の形態である乱数生成装置の構成の一例を示す概念図である。
【図５】図４に例示した本発明の乱数生成装置の変形例を示す概念図である。
【図６】素乱数と、この素乱数を元に生成した反転トリガ信号の関係の一例を信号の波形で表した線図である。
【図７】本発明の一実施の形態である乱数生成装置の作用の一例を表形式で例示した説明図である。
【図８】本発明の他の実施の形態である乱数生成装置の構成の一例を示す概念図である。
【図９】本発明の乱数生成技術をソフトウェアにて行わせる場合の一例を示すフローチャートである。
【符号の説明】
１０Ａ，１０Ｂ…ダイオード、１１…クロック発生機構、１２Ａ，１２Ｂ…アナログ・デジタル変換機構、１３Ａ〜１３Ｄ…反転機構、１４…反転トリガ信号生成機構、１５…乱数データまとめ部、１５ａ…２進乱数データ、１６Ａ〜１６Ｊ…素乱数、１７Ａ〜１７Ｄ…反転トリガ信号、１８Ａ，１８Ｂ…ノイズ、１９…クロック信号、２１…素乱数、２２…反転トリガ信号、３０…ソフトウェア乱数生成装置、３０ａ…ソフトウェア素乱数、１４０Ａ〜１４０Ｂ…反転トリガ信号更新論理、１４１Ａ〜１４１Ｂ…反転トリガ信号レジスタ、１５０…シフト・レジスタ、１５１…データまとめ部制御論理、１５２…乱数データ・バッファ。
【図１】
0003680091.tif 000003
【図２】
0003680091.tif 000004
【図３】
0003680091.tif 000005
【図４】
0003680091.tif 000006
【図５】
0003680091.tif 000007
【図６】
0003680091.tif 000008
【図７】
0003680091.tif 000009
【図８】
0003680091.tif 000010
【図９】
0003680091.tif 000011