(57)【要約】本発明は、雑音発生素子がランダムに発生する雑音に基づいて物理乱数を生成する乱数生成装置及び乱数生成方法に関連し、簡易な回路構成でありながら、より高速に真の乱数を生成するとともに、乱数値の出現頻度を均一化することを目的とする。  乱数生成装置は、熱雑音発生素子において発生した熱雑音に基づく波形を増幅し、その出力信号が所定の閾値より低い状態から当該閾値を上回った時点においてランダムパルスを生成する。一方、一定周期を有する基準パルスを生成する基準パルス発生手段と、基準パルスと前記ランダムパルスとの間の時間間隔を計測する計時手段とが設けられ、この計時手段による計測値を乱数値として出力する。
2004017191.tif 000002
【特許請求の範囲】
【請求項１】
雑音発生素子と、
雑音発生素子において発生した雑音に基づく波形を増幅する増幅手段と、
前記増幅手段より出力される信号が所定の閾値より低い状態から当該閾値を上回った時点又は当該閾値より高い状態から当該閾値を下回った時点においてランダムパルスを生成するランダムパルス生成手段と、
一定周期を有する基準パルスを生成する基準パルス発生手段と、
前記基準パルスと前記ランダムパルスとの間の時間間隔を計測する計時手段とを含み、
前記計時手段による計測値を乱数値として出力することを特徴とする乱数生成装置。
【請求項２】
前記計時手段は、前記基準パルスよりも高い周波数のクロック信号を発生するクロック信号発生手段と、前記クロック信号のクロック数をカウントするカウント手段とを含み、前記基準パルスと前記ランダムパルスとの間のクロック数をカウントしたカウント値を計測値とするものである請求項１に記載の乱数生成装置。
【請求項３】
雑音発生素子と、
雑音発生素子において発生した雑音に基づく波形を増幅する増幅手段と、
前記増幅手段より出力される信号が所定の閾値より低い状態から当該閾値を上回った時点において第一のランダムパルスを生成する第一のランダムパルス生成手段と、
前記増幅手段より出力される信号が所定の閾値より高い状態から当該閾値を下回った時点において第二のランダムパルスを生成する第二のランダムパルス生成手段と、
一定周期を有する基準パルスを生成する基準パルス発生手段と、
前記基準パルスよりも高い周波数のクロック信号を発生するクロック信号発生手段と、
前記クロック信号のクロック数を互いに逆の方向にカウントする第一及び第二のカウント手段と、
排他的論理和演算を行う演算手段とを含み、
前記第一のカウント手段は前記基準パルスと前記第一のランダムパルスとの間のクロック数をカウントし、前記第二のカウント手段は前記基準パルスと前記第二のランダムパルスとの間のクロック数をカウントし、前記演算手段は、第一のタウンと手段と第二のカウント手段の対応する桁の値について排他的論理和演算を行い、その演算結果を乱数として出力することを特徴とする乱数生成装置。
【請求項４】
請求項１乃至３に記載の乱数生成装置を複数設け、それぞれから生成される乱数を一括して一つの乱数とすることにより、乱数生成速度を高速化したことをとする乱数生成装置。
【請求項５】
前記雑音発生素子は熱雑音発生素子であり、前記雑音は熱雑音である、請求項１乃至４のうちいずれか一項に記載の乱数生成装置。
【請求項６】
前記雑音発生素子は発光素子であり、前記雑音は光に基づく雑音である、請求項１乃至４のうちいずれか一項に記載の乱数生成装置。
【請求項７】
雑音発生素子における雑音の発生に基づいてランダムパルスを生成する工程と、
一定周期を有する基準パルスを生成する工程と、
前記基準パルスと前記ランダムパルスとの間の時間間隔を計測し、その計測値を乱数値として出力する工程とを含むことを特徴とする乱数生成方法。
【請求項８】
前記雑音発生素子は熱雑音発生素子であり、前記雑音は熱雑音である、請求項７に記載の乱数生成方法。
【請求項９】
前記雑音発生素子は発光素子であり、前記雑音は光に基づく雑音である、請求項７に記載の乱数生成方法。
【発明の詳細な説明】
【技術分野】  本発明は、抵抗体、半導体、もしくは導体等からなる熱雑音発生素子がランダムに発生する熱雑音、あるいはＬＥＤやＰＩＮダイオード等の発光素子がランダムに発生する光の雑音などに基づいて物理乱数を生成する乱数生成装置及び乱数生成方法に関する。
【背景技術】  自然現象に基づいて物理乱数を取り出す方法の一つに、抵抗、ダイオード等の半導体、あるいは導体を熱雑音発生素子として用いる方法が知られている。熱雑音発生素子において発生する熱雑音は、発生頻度、振幅ともにランダムなので、この熱雑音に基づいて物理乱数を取り出すことができる。このような熱雑音発生素子を利用した各種の乱数生成装置は、多数の文献において開示されている。
熱雑音発生素子を用いて物理乱数を生成するもっとも一般的な方法は、ある瞬間に熱雑音発生素子が出力する熱雑音を増幅してサンプリングし、その値をある閾値と比較して乱数を取り出す方法である。すなわち、熱雑音発生素子から出力され、増幅された熱雑音を一定周期でサンプリングし、そのサンプリングされた値がある閾値を超えていれば「１」、超えていなければ「０」というルールを設定しておくことによって、物理乱数をディジタル的に取り出すことができる。
熱雑音発生素子を用いて物理乱数を生成する他の方法として、ランダムに発生する熱雑音が、ある閾値を超えてから次にその閾値を超えるまでの時間間隔を測定し、その時間計測値をそのまま乱数値として取り出す方法が知られている。この方法による乱数生成装置の一例が、日本の特許公報である特開２００１−１３４４２２号公報において説明されている。
この乱数生成装置では、熱雑音発生素子から出力される熱雑音を増幅し、このその波高がある閾値を超える瞬間に立ち上がる方形パルスを生成する回路を構成し、これとは別にこのパルスよりも十分に周波数が高いクロックを生成する回路及びクロックをカウントするカウンタを設け、一つのパルスが発生してから次のパルスが発生するまでの間に生成されるクロックをカウンタでカウントし、このカウント値を乱数として取り出す。ただし、カウンタのビット数（ｎビットとする）は有限のため、２ｎ回カウントするとカウンタはリセットされ、再び１からカウントを始めるので、実際に取り出される乱数値の種類は２ｎ個である。この方法は、熱雑音のパルス一発当たりにｎビットの乱数が生成されるので、熱雑音を瞬間的にサンプリングする方法に比べ、高速に乱数を生成することができる。
しかしながら、時間間隔を計測する方法では、計測時間が指数関数分布を示すことから、計測時間に基づいて得られる乱数値には、わずかながら出現頻度に不均一を生じる。この程度の不均一はこれまでは無視されてきたが、より良好な乱数を取り出すためには、かかる不均一を解消することが望ましい。
また、単位時間当たりに取り出す乱数の数を多くしようとすると、すなわち乱数を高速に発生させようとすると、熱雑音に基づく連続するパルスが時間的に近づいて発生する頻度が高くなる。この場合、増幅回路の周波数特性などに起因してこれらのパルスを回路的に識別することができないことがある。このため、カウンタのカウント動作が一巡する前の小さい値の出現頻度がやや小さくなり、このことも出現頻度を不均一にする原因の一つとなっている。
本発明は、このような技術的背景のもとになされたものであり、簡易な回路構成でありながら、より高速に乱数を生成するとともに、各値の出現頻度を均一化することができる乱数生成装置及び乱数生成方法を提供することを目的とする。
【発明の開示】
上記の課題を解決すべくなされた本発明に係る乱数生成装置は、雑音発生素子と、雑音発生素子において発生した雑音に基づく波形を増幅する増幅手段と、前記増幅手段より出力される信号が所定の閾値より低い状態から当該閾値を上回った時点又は当該閾値より高い状態から当該閾値を下回った時点においてランダムパルスを生成するランダムパルス生成手段と、一定周期を有する基準パルスを生成する基準パルス発生手段と、前記基準パルスと前記ランダムパルスとの間の時間間隔を計測する計時手段とを含んで構成され、前記計時手段による計測値を乱数値として出力する。
ここで、前記計時手段は、前記基準パルスよりも高い周波数のクロック信号を発生するクロック信号発生手段と、前記クロック信号のクロック数をカウントするカウント手段とを含んで構成され、前記基準パルスと前記ランダムパルスとの間のクロック数をカウントしたカウント値を計測値とする。
さらに、上記の課題を解決すべくなされた本発明に係る乱数生成装置は、雑音発生素子と、雑音発生素子において発生した雑音に基づく波形を増幅する増幅手段と、前記増幅手段より出力される信号が所定の閾値より低い状態から当該閾値を上回った時点において第一のランダムパルスを生成する第一のランダムパルス生成手段と、前記増幅手段より出力される信号が所定の閾値より高い状態から当該閾値を下回った時点において第二のランダムパルスを生成する第二のランダムパルス生成手段と、一定周期を有する基準パルスを生成する基準パルス発生手段と、前記基準パルスよりも高い周波数のクロック信号を発生するクロック信号発生手段と、前記クロック信号のクロック数を互いに逆の方向にカウントする第一及び第二のカウント手段と、排他的論理和演算を行う演算手段とを含んで構成され、前記第一のカウント手段は前記基準パルスと前記第一のランダムパルスとの間のクロック数をカウントし、前記第二のカウント手段は前記基準パルスと前記第二のランダムパルスとの間のクロック数をカウントし、前記演算手段は、第一のタウンと手段と第二のカウント手段の対応する桁の値について排他的論理和演算を行い、その演算結果を乱数として出力する。
上述の乱数生成装置を複数設け、それぞれから生成される乱数を一括して一つの乱数とすることができ、これにより乱数生成速度を高速化することができる。
前記雑音発生素子は熱雑音発生素子又は発光素子とすることができ、熱雑音発生素子の場合は熱雑音に基づいて、発光素子の場合は光の雑音に基づいて、乱数を生成することができる。
【図面の簡単な説明】  図１は、本発明の実施形態に係る乱数生成回路のブロック図である。
図２は、熱雑音発生素子１０の両端に生じる熱雑音による微小な電位変動の波形を模式的に示した図（Ａ）、増幅器１２によって増幅された熱雑音の波形を模式的に示した図（Ｂ）、そして、ランダムパルス生成器１４ａから出力されるランダムパルスの波形を模式的に示した図（Ｃ）である。
図３は、図１の上段のＡ型乱数生成部８ａにおける各部の波形を説明するための図である。
図４は、熱雑音に基づくパルスの平均発生数が毎秒約１０万個である乱数生成装置を用いて、その乱数の発生数を１０秒間にわたってカウントする実験を連続して１３万５千回繰り返した実験結果を示した図である。
図５は、熱雑音に基づくパルスの平均発生数が毎秒約１万個である乱数生成装置を用いて、一つの基準パルスからランダムパルスまでの時間をクロックパルスのカウント数として測定した実験の結果を示したグラフである。
図６は、図１の乱数生成回路を用いて実際に乱数を生成する実験を行って得られた乱数の分布をとった結果を示した図である。
図７は、図１に示した乱数生成回路を多数段連結し、それぞれの乱数生成装置から得られる乱数値を一括して一つの乱数値として出力する乱数生成回路を示した図である。
【発明を実施するための最良の形態】  以下に、図面を参照しながら本発明の実施の一形態について説明する。図１は、本実施形態の乱数生成回路のブロック図を示している。図１の乱数生成回路は、８ａ、８ｂという二つの乱数生成部からなり（前者をＡ型乱数生成部、後者をＢ型乱数生成部とする）、これらが単一の熱雑音発生素子１０に基づいて、それぞれ乱数を生成する。以下では、各乱数生成部を構成する回路要素を含めて、Ａ型とＢ型を区別する必要がないときは添字ａ、ｂを省略し、単に乱数生成部８等と記す。なお、各乱数生成部ごとに個別に熱雑音発生素子１０を設けてもよい。
図１のブロック図において、熱雑音発生素子１０は、熱雑音に基づいてパルス状の電位変動を出力する素子であり、通常は抵抗が熱雑音発生素子として用いられることが多い。熱雑音の発生はランダムな現象であることが、一般に認められている。図１の回路では、熱雑音発生素子１０の両端に電圧を印加していないが、これは外部から印加される電圧が熱雑音発生素子の両端間の電位変動に影響を与えて物理乱数の真性を損なうことを排除するためである。
符号１２ａ、１２ｂは熱雑音発生素子１０において発生する熱雑音を増幅する増幅器を、符号１４ａ、１４ｂは熱雑音に基づいてランダムパルスを生成するランダムパルス生成器を、符号２０ａ、２０ｂはクロックパルスを生成するクロックパルス生成器を、符号１６ａ、１６ｂはクロックパルスをカウントするカウンタを、符号１８ａ、１８ｂはそれぞれカウンタ１６ａ、１６ｂのカウント動作をトリガーする基準パルス生成器をそれぞれ示している。なお、クロックパルス生成器２０ａと２０ｂは、図１のように別々のものを設けるのではなく、単一のクロックパルス生成器としてもよい。
図２（Ａ）は、熱雑音発生素子１０の両端に生じる熱雑音による微小な電位変動の波形を模式的に示している。同図に示すように、各熱雑音は、その時間幅も発生頻度もランダムである。実際には、この電位変動は極めて微小であるため、増幅する前の波形をこのような形で観測することはできない。
図１のブロック図において、増幅器１２は、熱雑音発生素子１０の両端に生じる熱雑音を増幅する。前述のように熱雑音は微小な電位変動であるため、必要な増幅度を得るために、例えば前置増幅回路と主増幅回路というように、増幅器１２を必要に応じて複数段の増幅回路から構成することもできる。
図２（Ｂ）は、増幅器１２によって増幅された熱雑音の波形を模式的に示している。実際の増幅回路には周波数特性や増幅度の制約があるため、熱雑音に基づく波形を忠実に増幅することはできない。増幅回路の出力では、増幅可能な周波数帯域を超えるほど素速い電位変動や極めて微小な変動などはキャンセルされる。また、増幅回路から出力される熱雑音に基づくパルスの幅は、増幅回路に固有の時定数によって影響を受ける。したがって、図２（Ｂ）に示した波形は、このような増幅回路の回路特性の影響を受けて得られたものである。こうして得られた図２（Ｂ）のパルスの平均的な持続時間は、同図に示すように、２００ナノ秒程度である。
図１のブロック図において、ランダムパルス生成器１４は、ランダムに発生する熱雑音から、予め閾値を設定しておき、増幅器１２の出力がこの閾値を超えたときに、一定時間幅のパルス（「ランダムパルス」という）を取り出す回路である。一般に、この閾値が高いと、得られるランダムパルスの数は少なくなり、生成できる乱数の速度は低下する、熱雑音以外のノイズなどの影響を排除する効果は高くなる。一方、この閾値が低いと、得られるランダムパルスの数は多くなり、乱数の生成速度は高速になるが、乱数の真性に影響を与えるノイズを拾いやすくなる。このため、閾値をどこに設定するかは、実際のアプリケーションを考慮して決められる。
ランダムパルス生成器１４のうち、１４ａは、熱雑音に基づく波形が所定の閾値を超えた時点で立ち上がるランダムパルスを生成する。一方、１４ｂは、熱雑音に基づく波形が所定の閾値よりも高い状態からこの閾値を下回った時点で立ち上がるランダムパルスを生成する。ランダムパルス生成器１４ａと１４ｂの閾値は、同じであってもよいし異なっていてもよい。
図２（Ｃ）は、ランダムパルス生成器１４ａから出力されるランダムパルスの波形を模式的に示している。同図に示すように、生成されるランダムパルスは、いずれもそのパルス幅が１０ナノ秒となるようランダムパルス生成器１４ａ、１４ｂを構成してある。これらのランダムパルスは熱雑音に基づくものであるが、熱雑音に基づく信号に回路的な処理を加えて得られるものであることから、このランダムパルスの発生頻度が本当にランダムであるかどうかを別途検証する必要がある。
図１のブロック図において、基準パルス発生器１８ａ、１８ｂから生成される基準パルスは、それぞれ、カウンタ１６ａ、１６ｂがカウント動作を開始するためのトリガーパルスとなる。ここでは、カウンタ１６ａ、１６ｂをいずれも４ビット・カウンタとして説明する。クロックパルス生成器２０ａ、２０ｂは、基準パルス生成器１８ａ、１８ｂが生成する基準パルスよりも十分に高い周波数（例えば３００倍程度）のクロックパルスを常時生成している。カウンタ１６ａは順方向カウンタであり、一つのクロックパルスが入来するごとに１ずつインクリメントされる。一方、カウンタ１６ｂは逆方向カウンタであり、クロックパルスが入来するごとに１ずつデクリメントされる。そして、いずれのカウンタも、４ビット分（すなわち１６まで）カウントとするごとにリセットされ、再び最初からカウントする。
このように、一対の基準パルス発生器１８ａ、１８ｂと、順方向カウンタ１６ａ及び逆方向カウンタ１６ｂを設けた点が、本実施形態の乱数生成回路の一つの特徴である。
ここで、ランダムパルスの平均発生数を毎秒約１万とすると、ランダムパルスとランダムパルスの平均的な時間間隔は約１００マイクロ秒である。この場合、基準パルス生成器１８ａ、１８ｂは、周期がこの１００マイクロ秒と同程度となる周波数で基準パルスを生成する。また、カウンタ１６ａ、１６ｂは、ここでは４ビット・カウンタとして説明するが、これは一例であり、例えば８ビット・カウンタ、１６ビット・カウンタ等であってもよい。
図３は、図１の上段のＡ型乱数生成部８ａにおける各部の波形、すなわち、基準パルス発生器１８ａから生成される基準パルス（Ａ）、ランダムパルス生成器１４ａから生成されるランダムパルス（Ｂ）、クロックパルス生成器２０ａから生成されるクロックパルス（Ｃ）、そしてカウンタ１６ａによってカウントされるクロックパルスのカウント値（Ｄ）の間の関係を説明するための図である。なお、下段の乱数生成部８ｂについても同様に考えることができるので、ここでは乱数生成部８ｂについては波形の図示を省略した。
図３（Ａ）において、基準パルス発生器１８ａから基準パルス３０１が生成されると、カウンタ１６ａはクロックパルスのカウント動作を開始する。続いて、ランダムパルス生成器１４ａにおいて熱雑音に起因するランダムパルス３２１が生成され、これがカウンタ１６ａに入来すると、カウンタ１６ａはカウント動作を停止する。この間に発生したクロックパルスのパルス数が「１９」だったとすると、４ビット・カウンタ１６のカウント値は、「１９」を「１６（＝２４）」で割った余りである「３」となる。
また、基準パルス３０２が生成されるとカウンタ１６ａはクロックパルスのカウント動作を開始する。しかし、次の基準パルス３０３が生成されるまでにランダムパルスが入来しない場合は、カウンタ１６ａはカウント動作を継続し、その後にランダムパルス３２２が入来した時点でカウント動作を停止する。この間に発生したクロックパルスのパルス数が「８５３」だったとすると、４ビット・カウンタ１６ａのカウント値は、「８５３」を「１６（＝２４）」で割った余りである「５」となる。
さらに、基準パルス３０４が生成されてからランダムパルス３２３が生成されるまでのクロックパルス数が「６」だったとすると、４ビット・カウンタ１６ａのカウント値は、「６」を「１６（＝２４）」で割った余りである「６」となる。同様に、基準パルス３０５が生成されてからランダムパルス３２４が生成されるまでのクロックパルス数が「１２０」だったとすると、４ビット・カウンタ１６ａのカウント値は、「１２０」を「１６（＝２４）」で割った余りである「８」となる。
ここで、図３（Ｄ）に示した４ビット・カウンタ１６ａのカウント値である「３」、「５」、「６」、「８」が、そのまま乱数値となっている点が注目される。同様に、下段の乱数生成部８ｂの逆方向カウンタである４ビット・カウンタ１６ｂのカウント値も、それがそのまま乱数値となる。しかも、両カウンタのカウント値として得られる乱数値はそれぞれ独立しており、互いに依存関係はない。したがって、単一の熱雑音発生素子からの熱雑音波形の１周期の間に２個の乱数値が得られる。
このようにして得られた乱数がどの程度真の乱数であるかを検証する方法について説明する。得られた乱数が真の乱数であること確かめるには、一定時間にわたって集積した各値の分布がポアッソン分布に従うことを示せばよいことが数学的に知られている。あるいは、個体数が多いときにはポアッソン分布はガウス分布で近似でき、本実施形態のように個体数が非常に多い場合には、得られた値の分布がガウス分布に従うことを示せばよい。
図４は、熱雑音に基づくパルスの平均発生数が毎秒約１０万個である乱数生成装置を用いて、その乱数の発生数を１０秒間にわたってカウントする実験（すなわち平均計測数は約１００万個となる）を連続して１３万５千回繰り返した実験結果を示している。図の一つひとつの黒のドットが実験値をプロットしたものである。一方、図４に実線で示した曲線は、偏差σ＝１，０２５を持つガウス分布を示している。なお、図４の縦軸の頻度の目盛りは対数である点に注意する。
図４を見ると分かるように、黒のドットは、ガウス分布を示す曲線上によく乗っており、したがって偏差σは、
σ＝Ｎ１／２＝１，０２５
となっている。このことから、ランダムな現象である熱雑音に基づいて、それに回路的な処理を施しても、ここで得られる乱数が非常によい乱数であることが示されたことになる。
また、本実施形態のように、基準パルスとランダムパルスとの間の時間を計測し、その計測結果を取り出したものが真の乱数になっているとすれば、その時間間隔の分布は指数関数分布となることが数学的に知られている。図５は、熱雑音に基づくパルスの平均発生数が毎秒約１万個である乱数生成装置を用いて、一つの基準パルスからランダムパルスまでの時間を、クロックパルスのカウント数として測定した実験結果を示したグラフである。同図に示した一つひとつのドットが、時間間隔の頻度を示している。図５の場合も、頻度を示す縦軸の目盛りは対数である。
図５の実験結果から、時間間隔の頻度を示すドットは明らかに直線となっていおり、図５の縦軸が対数であることから、乱数の発生頻度の分布は指数関数的に減少している。このことから、熱雑音に基づいて本実施形態の乱数生成装置によって生成した乱数は、真の乱数であることが分かる。
なお、図５に示すような指数分布は、ｅｘｐ（−ｔ／Ｔ０）に比例する分布として表すことができる。ここで、横軸のｔは時間間隔であり、Ｔ０は熱雑音と熱雑音の時間間隔の平均値である。熱雑音の平均発生数が約１万であるから、Ｔ０〜（１／１０，０００）＝１００μ秒である。この平均時間間隔Ｔ０を図５に矢印で示す。
ところで、熱雑音と熱雑音の間の時間間隔が、図５に示すように指数関数分布を示すということは、この時間を計測した値を乱数として用いた場合に、それぞれの乱数の出現頻度が完全には均一でなく、わずかではあるが、大きい値ほど出現しにくいことになる。実際の乱数生成装置では、図５の横軸のうち、時間間隔ゼロから僅かに数マイクロ秒程度の極めて短い時間間隔の範囲のみを乱数生成に用いているので、乱数値の出現頻度の不均一さは極めて小さい。
上記のように、本発明では基準パルスを導入し、この基準パルスからランダムパルスまでの時間を計測し、その計測値をそのまま乱数として取り出している。このように基準パルスを導入すると、以下のような利点がある。
前述のように増幅回路１２から出力される熱雑音に基づくパルスの幅は２００ナノ秒程度である。このパルス幅は、少なくとも部分的には増幅回路１２の高周波特性に依存する。この場合（図２（Ｂ）参照）、基準パルスを導入せずにランダムパルスから次のランダムパルスまでの時間を計測してこれを乱数値として出力すると、熱雑音に基づくパルスが２００ナノ秒程度の短時間の間に連続して起こったような場合には、両者を区別することができない。その結果、カウンタが一巡してリセットされる前の例えば「０」、「１」、「２」等の小さい値は、取り出すことができない。もちろん、カウンタがリセットされれば最初からカウントし直すのでこれらの値が全く出現しないわけではないが、その出現頻度が他の値に比べて小さくなることは避けられない。すなわち、乱数の値の出現頻度に不均一が生じることになる。
これに対して、本発明のように一定の周期で発生する基準パルスを導入し、これをカウンタがカウント動作を開始するトリガーパルスとして用いることにより、ある基準パルスとその後に発生するランダムパルスとの時間間隔が、２００ナノ秒よりも相当程度短くても、その時間間隔を計測することができる。このためカウンタが一巡してリセットされる前の「０」、［１］、「２」等の小さい値であっても取り出すことができるようになる。これは、言い換えると、等価的に増幅回路１２の高周波特性が改善されたことを意味する。これにより、乱数の値、特に小さい値の出現頻度の不均一さが改善される。
さらに、図１に示した乱数生成回路には、排他的論理和回路２２を設けてある。この排他的論理和回路２２は、順方向カウンタ１６ａと逆方向カウンタ１６ｂの対応する桁同士の排他的論理和をとり、得られた４ビットの値を乱数値として取り出す。例えば一桁目を考えると、カウンタ１６ａの一桁目の値が「０」でカウンタ１６ｂの一桁目の値も「０」であれば、排他的論理和をとった結果は「１」となり、カウンタ１６ａの一桁目の値が「１」でカウンタ１６ｂの一桁目の値も「１」であれば、排他的論理和をとった結果は「１」となる。一方、カウンタ１６ａの一桁目とカウンタ１６ｂの一桁目の一方が「０」で他方が「１」であれば、排他的論理和をとった結果は「０」となる。他の桁についても同様である。
このように、順方向カウンタ１６ａと逆方向カウンタ１６ｂの対応する桁同士の排他的論理和をとったものを最終的な乱数値とすることによって、以下のような効果が得られる。
図６は、図１の乱数生成回路を用いて実際に乱数を生成する実験を行って得られた乱数の分布をとった結果を示している。図６の実験では、クロック周波数Ｆが１００ＭＨｚ、ランダムパルスの生成数Ｎが毎秒約１００，０００個の乱数生成装置を用いている。図６（ａ）は、順方向カウンタ１６ａの各カウント値の出現頻度の分布を示している。これを見ると分かるように、僅かではあるが明らかに右肩下がりの分布を示し、値が大きくなるほど出現頻度が低下している。この傾きは、理論上は−Ｎ／Ｆ＝−０．００１である。図６の縦軸が常用対数であることに注意し、縦軸の値の常用対数をとって実際に図６（ａ）の傾き求めると、−０．００１０３０となり、理論とよく合っていることが分かる。
図６（ｂ）は、逆方向カウンタ１６ｂの各カウント値の出現頻度の分布を示している。これを見ると分かるように、僅かではあるが明らかに右肩上がりの分布を示している。すなわち４ビットのカウント値は、値が大きくなるほど出現頻度が上昇している。この傾きは、理論上はＮ／Ｆ＝０．００１であり、実際に図６（ｂ）の傾き求めると０．００１０９４となり、理論とよく合っていることが分かる。
図６（ｃ）は、順方向カウンタ１６ａと逆方向カウンタ１６ｂそれぞれのカウント値の対応する桁同士について排他的論理和演算を行って得られる値の分布を示している。これを見ると分かるように、分布はほぼ水平である。すなわち、この排他的論理和演算の結果得られる４ビットの乱数値は、出現頻度が均一化されたほぼ完全な乱数と考えることができる。
図７は、図１に示した乱数生成回路を多数段連結し、それぞれの乱数生成回路から得られる乱数値を一括して一つの乱数値として出力する乱数生成回路を示している。図７において、８ａ１、８ａ２、…、８ａｎはＡ型乱数生成部、８ｂ１、８ｂ２、…８ｂｎはＢ型乱数生成部である。また、２２１、２２２、…２２２ｎは排他的論理和回路である。符号２４は、乱数値を取り出し方を制御する乱数制御回路である。
図７のように、単一の乱数生成回路を多数段連結すれば、それだけ乱数生成速度を高速化することができる。この場合、図６（ｃ）に示すように、一つの乱数生成回路の乱数値の出現頻度が均一化されているが、これらを多数段連結した場合には、得られる高速乱数はより均一性を持つ。したがって、図１に示す乱数生成回路は、これを多数段連結して乱数生成速度を高速化する場合に、物理乱数の完全性を維持することができるという利点がある。
なお、本発明は上記の実施形態には限定されず、請求の範囲に記載した発明の要旨の範囲内において種々の変更が可能であり、これらも本発明の技術的範囲に含まれる。
例えば、上記の実施形態では、基準パルスをカウンタ１６ａ、１６ｂのカウント動作を開始するトリガーパルスとし、ランダムパルスが入来した時点でカウント動作を終了するように構成したが、逆にランダムパルスをカウント動作開始のトリガーパルスとし、基準パルスが入来した時点でカウント動作を終了するように構成しても同様の効果が得られる。また、上記の実施形態では、カウンタ１６ａと１６ｂの対応する桁同士の排他的論理和をとった値を最終的な乱数値として出力したが、カウンタ１６ａ、１６ｂのカウント値をそのまま最終的な乱数値として出力することも可能である。
さらに、上記の実施形態では、熱雑音発生素子からの熱雑音に基づいて物理乱数を生成する場合について説明したが、本発明はこれ以外にも、例えばＬＥＤやＰＩＮダイオード等の発光素子からランダムに発せられる光の雑音に基づいて、その雑音パルス間の時間間隔を測定し、これに基づいて物理乱数を生成する場合にも適用可能である。
【産業上の利用可能性】  本発明は、熱雑音発生素子がランダムに発生する熱雑音や、発光素子がランダムに発する光の雑音に基づいて物理乱数を取り出すので、簡単な回路構成で物理乱数を生成することができる。また、本発明によって乱数生成速度の高速化及び乱数値の出現頻度の均一化が達成される。乱数を利用した各種のシミュレーション、例えば金融派生商品（デリバティブ）、建造物の強度シミュレーション、天気予報、シミュレーションを利用した高度な遊技機等に好適に適用できる。
【図１】
2004017191.tif 000003
【図２】
2004017191.tif 000004
【図３】
2004017191.tif 000005
【図４】
2004017191.tif 000006
【図５】
2004017191.tif 000007
【図６】
2004017191.tif 000008
【図７】
2004017191.tif 000009
【手続補正書】
【提出日】平成15年12月26日(2003.12.26)
【手続補正００１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】雑音発生素子と、
雑音発生素子において発生した雑音に基づく波形を増幅する増幅手段と、
前記増幅手段より出力される信号が所定の閾値より低い状態から当該閾値を上回った時点又は当該閾値より高い状態から当該閾値を下回った時点においてランダムパルスを生成するランダムパルス生成手段と、
時間間隔を計測する際の始点又は終点とする基準パルスであって、一定周期を有する基準パルスを生成する基準パルス発生手段と、
前記基準パルスと前記ランダムパルスとの間の時間間隔を計測する計時手段とを含み、
前記計時手段による計測値を乱数値として出力することを特徴とする乱数生成装置。


【手続補正００２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項３
【補正方法】変更
【補正の内容】
【請求項３】雑音発生素子と、
雑音発生素子において発生した雑音に基づく波形を増幅する増幅手段と、
前記増幅手段より出力される信号が所定の閾値より低い状態から当該閾値を上回った時点において第一のランダムパルスを生成する第一のランダムパルス生成手段と、
前記増幅手段より出力される信号が所定の閾値より高い状態から当該閾値を下回った時点において第二のランダムパルスを生成する第二のランダムパルス生成手段と、
時間間隔を計測する際の始点又は終点とする基準パルスであって、一定周期を有する基準パルスを生成する基準パルス発生手段と、
前記基準パルスよりも高い周波数のクロック信号を発生するクロック信号発生手段と、
前記クロック信号のクロック数を互いに逆の方向にカウントする第一及び第二のカウント手段と、
排他的論理和演算を行う演算手段とを含み、
前記第一のカウント手段は前記基準パルスと前記第一のランダムパルスとの間のクロック数をカウントし、前記第二のカウント手段は前記基準パルスと前記第二のランダムパルスとの間のクロック数をカウントし、前記演算手段は、第一のカウント手段と第二のカウント手段の対応する桁の値について排他的論理和演算を行い、その演算結果を乱数として出力することを特徴とする乱数生成装置。


【手続補正００３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】雑音発生素子における雑音の発生に基づいてランダムパルスを生成する工程と、
時間間隔を計測する際の始点又は終点とする基準パルスであって、一定周期を有する基準パルスを生成する工程と、
前記基準パルスと前記ランダムパルスとの間の時間間隔を計測し、その計測値を乱数値として出力する工程とを含むことを特徴とする乱数生成方法。




【国際調査報告】
2004017191.tif 000010
2004017191.tif 000011
2004017191.tif 000012
2004017191.tif 000013