(57)【要約】本発明は、乱数発生器によって生成される乱数をリアルタイムにテストする方法及び装置である。ランダムビットのストリームが、乱数発生器を使用して生成され、生成されたランダムビットは、関数的な指数平均ギャップ長計算を受ける。その中で、同一のビットパターンを有する複数のサブシーケンスの出現の間の距離が識別され、平均ギャップ長を得るために関数的な加重及び指数平均化に適用される。平均ギャップ長は、予め決められた受容レンジと比較され、平均ギャップ長が予め決められた回数より多く繰り返し予め決められた受容レンジ外となる場合、生成されたランダムビットが不十分にランダムであると決定される。
2005521157.tif 000002
【特許請求の範囲】
【請求項１】
乱数のストリームを生成する際にランダム性をテストする方法であって、
ランダムな２進ビットの連続するストリームを生成するステップと、
少なくとも２つの同一のビットパターンの出現の間の重み付けされたギャップ長を計算するために、生成された前記ランダムビットを関数的な指数ギャップ平均計算に適用するステップと、
前記指数ギャップ演算の出力を予め決められた受容レンジと比較することによって、前記生成されたランダムビットが十分にランダムであるかどうかを決定するステップと、
を含む方法。
【請求項２】
前記予め決められた受容レンジは、所望のセキュリティ閾値を達成するためにオペレータによって選択される、請求項１に記載の方法。
【請求項３】
前記平均ギャップ長が、予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、前記生成されたランダムビットが不十分にランダムであると決定するステップを更に含む、請求項１に記載の方法。
【請求項４】
前記平均ギャップ長が、予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、前記生成されたランダムビットが不十分にランダムであることを知らせるステップを更に含む、請求項１に記載の方法。
【請求項５】
前記平均ギャップ長が、予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、ランダムビットの新しい組を生成するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記平均ギャップ長が、予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、後続のアプリケーションに対して前記生成されたランダムビットを否定するステップを更に含む、請求項１に記載の方法。
【請求項７】
乱数発生器によって生成される乱数をテストする方法であって、
（ａ）前記乱数発生器を使用してランダムビットのストリームを生成するステップと、
（ｂ）生成された前記ランダムビットをギャップ長演算に適用するステップと、
（ｃ）関数的な平均ギャップ長を得るために、前記ギャップ長演算の出力を関数的な指数平均化に適用するステップと、
（ｄ）前記関数的な平均ギャップ長を予め決められた受容レンジと比較するステップと、
（ｅ）前記関数的な平均ギャップ長が、予め規定された回数より多く前記予め決められた受容レンジ外となるかどうかを決定するステップと、
を含む方法。
【請求項８】
前記予め決められた受容レンジは、所望のセキュリティ閾値レベルを達成するためにオペレータによって選択される、請求項７に記載の方法。
【請求項９】
前記関数的な平均ギャップ長が前記予め規定された回数より多く前記予め決められた受容レンジ外となる場合、前記生成されたランダムビットが不十分にランダムであると決定するステップを更に含む、請求項７に記載の方法。
【請求項１０】
前記関数的な平均ギャップ長が前記予め決められた受容レンジ内にある場合、前記関数的な平均ギャップ長が前記予め決められた受容レンジ外になるまで、前記ステップ（ａ）−（ｅ）を繰り返すステップを更に含む、請求項７に記載の方法。
【請求項１１】
前記ステップ（ａ）−（ｅ）が前記予め規定された回数より多く繰り返される場合、不十分にランダムな数が生成されることを知らせるステップを更に含む、請求項１０に記載の方法。
【請求項１２】
前記ステップ（ａ）−（ｅ）が、前記予め規定された回数より多く繰り返される場合、乱数の新しい組を生成するステップを更に含む、請求項７に記載の方法。
【請求項１３】
乱数発生器によって生成される乱数をテストする装置であって、
２進ビットを含むランダムシーケンスを生成する手段と、
関数的な指数平均ギャップ長演算に基づいて、生成された前記ランダムシーケンスが不十分にランダムであるかどうかを検出する手段と、
前記生成されたランダムシーケンスが不十分にランダムであると決定される場合、後続のアプリケーションに対する前記生成されたランダムシーケンスのフローを制御する手段と、
を有し、前記関数的な指数平均ギャップ長演算は、同一のビットパターンの少なくとも２つの出現の間の平均ギャップ長を計算するために実施され、前記平均ギャップ長が予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、前記生成されたランダムシーケンスが不十分にランダムであると決定される、装置。
【請求項１４】
前記平均ギャップ長が、前記予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、前記生成されたランダムシーケンスが不十分にランダムであるとのアラーム信号を送信する手段を更に有する、請求項１３に記載の装置。
【請求項１５】
前記平均ギャップ長が、前記予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、ランダムビットの新しい組を生成する手段を更に有する、請求項１３に記載の装置。
【請求項１６】
前記予め決められた受容レンジは、所望のセキュリティ閾値レベルを達成するためにオペレータによって選択される、請求項１３に記載の装置。
【請求項１７】
命令のシーケンスを表すデータが記憶された機械読み取り可能な媒体であって、
前記命令のシーケンスは、プロセッサによって実行される場合、該プロセッサに、
乱数発生器によって生成されるランダムな２進ビットの連続するストリームを処理し、
同一のビットパターンの少なくとも２つの出現の間の平均ギャップ長を計算するために、生成された前記ランダムビットを関数的な指数平均ギャップ長計算に適用し、
前記指数ギャップ演算の出力を予め決められた受容レンジと比較することによって、前記生成されたランダムビットが不十分にランダムであるかどうかを決定するようにさせる、
機械読み取り可能な媒体。
【請求項１８】
前記予め決められた受容レンジが、所望のセキュリティ閾値レベルを達成するためにオペレータによって選択される、請求項１７に記載の機械読み取り可能な媒体。
【請求項１９】
前記プロセッサは更に、前記平均ギャップ長が予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、前記生成されたランダムビットが不十分にランダムであると決定するように動作する、請求項１７に記載の機械読み取り可能な媒体。
【請求項２０】
前記プロセッサは更に、前記平均ギャップ長が予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、前記生成されたランダムビットが不十分にランダムであることを知らせるように動作する、請求項１７に記載の機械読み取り可能な媒体。
【請求項２１】
前記プロセッサは更に、前記平均ギャップ長が予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、ランダムビットの新しい組を処理するように動作する、請求項１７に記載の機械読み取り可能な媒体。
【請求項２２】
前記プロセッサは更に、前記平均ギャップ長が予め規定された回数より多く繰り返し前記予め決められた受容レンジ外となる場合、後続のアプリケーションに対して前記生成されたランダムビットを否定するように動作する、請求項１７に記載の機械読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数発生器の分野に関し、特に真の２進ランダムシーケンスを生成するデジタルデータ処理装置及び方法に関する。
【背景技術】
【０００２】
多くの電子デバイスは、さまざまなランダムアプリケーションのために乱数発生器を具備する。特に、ランダム性がセキュリティを確実にするために極めて重要であるこのコンピュータ時代において、乱数発生器は根本的に重要なものである。しかしながら、真にランダムなシーケンスは、実アプリケーションにおいて生成するのが困難である。例えば、乱数発生器のハードウェアコンポーネントにおいて、それがある時間期間にわたって一連の１及び０を生成するとき、一般に熱が生成される。１のビットを生成することは、０のビットよりも多くのパワーを消費しうる。このように、１のビットの長いシーケンスが生成される場合、電気回路は熱くなり、回路を「ラッチアップ」させ、それによってたいていは１のビットを生成するが、まれに０のビットを生成する。回路が熱い間に０のビットが生成される場合、異なる効果が生じることがある。この場合、１のビットの長いサブシーケンスは、非常に珍しくなる。しばしば生じる長いサブシーケンスが０又は１の等しいビットからなるランダムシーケンスにおいて、先行する段落に記載したような、偏った０／１頻度のエラーは、セキュリティを侵すカタストロフィックな結果をもたらす。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
多くのアプリケーションのセキュリティは、乱数発生の実際のランダム性に依存する。従って、ランダム性テストを行う場合、ハードウェアのタンパリング及びコンポーネント不良の双方の検出が必要である。従来のランダム性テストは、例えばカイ２乗テスト、デルタテストなどの幅広い統計的なテストを通じて、生成された乱数のシーケンスに対して実施される。しかしながら、このようなテストは、大量の計算処理パワーを必要とするので、リアルタイムに実施されるには非常に高価である。
【０００４】
本発明は、上述の問題を解決し、生成された乱数が十分にランダムであることを確実にするためにオンラインランダム性テストを行う方法及び装置を提供することによって付加の利益を提供する。
【課題を解決するための手段】
【０００５】
本発明の１つの見地によれば、乱数のストリームを生成する際にランダム性をテストする方法は、ランダムな２進ビットの連続するストリームを生成するステップと、同一のビットパターンの出現の間の重み付けされたギャップ長を計算するために、生成されたランダムビットを関数的な指数ギャップ平均計算に適用するステップと、指数ギャップ演算の出力を予め決められた受容レンジと比較することによって、生成されたランダムビットが十分にランダムであるかどうかを決定するステップと、を含み、予め決められた受容レンジは、所望のセキュリティ閾値レベルを達成するためにオペレータによって選択される。方法は更に、平均ギャップ長が予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、生成されたランダムビットが不十分にランダムであると決定するステップと、平均ギャップ長が予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、生成されたランダムビットが不十分にランダムであることを知らせるステップと、平均ギャップ長が予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、ランダムビットの新しい組を生成するステップと、平均ギャップ長が予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、後続のアプリケーションに対して生成されたランダムビットを否定するステップと、を含む。
【０００６】
本発明の別の見地によれば、乱数発生器によって生成される乱数をテストする方法は、（ａ）乱数発生器を使用してランダムビットのストリームを生成するステップと、（ｂ）生成されたランダムビットをギャップ長計算演算に適用するステップと、（ｃ）関数的な平均ギャップ長を得るために、ギャップ長演算の出力を関数的な指数平均化に適用するステップと、（ｄ）関数的な平均ギャップ長を予め決められた受容レンジと比較するステップと、（ｅ）関数的な平均ギャップ長が、予め規定された回数より多く予め決められた受容レンジ外となるかどうかを決定するステップと、を含む。方法は更に、関数的な平均ギャップ長が予め規定された回数より多く予め決められた受容レンジ外となる場合、生成されたランダムビットが不十分にランダムであると決定するステップと、関数的な平均ギャップ長が、予め決められた受容レンジ内にある場合、関数的な平均ギャップ長が予め決められた受容レンジ外になるまでステップ（ａ）−（ｅ）を繰り返すステップと、ステップ（ａ）−（ｅ）が予め規定された回数より多く繰り返される場合、不十分にランダムな数が生成されることを知らせるステップと、ステップ（ａ）−（ｅ）が予め規定された回数より多く繰り返される場合、乱数の新しい組を生成するステップと、を含む。
【０００７】
本発明の別の見地によれば、乱数発生器によって生成される乱数をテストする装置は、２進ビットを含む乱数を生成する手段と、関数的な指数平均ギャップ長テストに基づいて、生成されたランダムシーケンスが不十分にランダムであるかどうかを検出する手段と、生成されたランダムシーケンスが不十分にランダムであると決定される場合、後続のアプリケーションに対する生成されたランダムシーケンスのフローを制御する手段と、を有し、関数的な指数平均ギャップ長演算は、同一のビットパターンの少なくとも２つの出現の間の平均ギャップ長を計算するために実施され、平均ギャップ長が予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、生成されたランダムシーケンスが不十分にランダムであると決定する。装置は更に、平均ギャップ長が予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、生成されたランダムシーケンスが不十分にランダムであるというアラーム信号を送信する手段を有し、平均ギャップ長が、予め規定された回数より多く繰り返し予め決められた受容レンジ外となる場合、ランダムビットの新しい組を生成する手段と、を有する。
【０００８】
更に別の見地は、本発明が、特定のアプリケーションにとって望ましいハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組み合わせにおいて実現されうることである。
【０００９】
更に、本発明は、簡単であり、信頼性が高く、安価なインプリメンテーションにおいて実現されることができる。
【００１０】
当業者には、これら及び他の利益が、添付の図面とともに以下の詳細な説明を読むことにより明らかになるであろう。
【発明を実施するための最良の形態】
【００１１】
以下の説明において、限定する目的ではなくむしろ説明の目的で、特定のアーキテクチャ、インタフェース、技法、その他のような特定の詳細が、本発明の完全な理解を与えるために記述されている。しかしながら、当業者には、本発明が、これらの特定の詳細から逸れる他の実施例において実施されうることが明らかであろう。簡潔さ及び明瞭さの目的で、不必要な詳細により本発明の説明を分かりにくくしないように、よく知られた装置、回路及び方法の詳細な説明は省かれている。
【００１２】
図１は、本発明の例示の実施例による乱数生成システム１０の簡略化されたブロック図を示している。システム１０は、一連の乱数を生成する乱数発生器（ＲＧ）１２、検出器１４及びスイッチ１６を有する。システム１０は、ハードウェア及びソフトウェアの双方の多様な手段並びに多様なコントローラ及びプロセッサによって実現されることができることに留意されたい。この開示において、乱数発生器１２は、所望のランダム性を含む２進ビットのシーケンス、信号のガウス分布若しくは任意の他の分布、０及び１の間の数を表す信号のシーケンス、十進数を表す信号のシーケンス又は任意の他の形式に変換されることができる信号を生成するいかなる装置も表す。スイッチ１６は、暗号システム、オーディオ又はビデオノイズ発生器、コンピュータプログラム又は他の装置及びプロセスへの入力を表すことができる。
【００１３】
動作中、乱数発生器１２は乱数の連続するストリームを生成し、その間、検出器１４は、予め決められた基準（以下に説明する）に従って、生成された乱数が真にランダムであるかどうかを検出する。生成された乱数が、予め決められた受容レベル内で十分にランダムであると決定される場合、スイッチ１６は、乱数発生器１２によって供給された乱数を使用する任意の回路、システム、プロセス、ギャンブリングアプリケーション、シミュレーション、統計サンプリング、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎキー交換等の後続のアプリケーションに対し、生成された乱数を与える。代替例として、生成された乱数が不十分にランダムであると決定される場合、乱数の新しい組が生成されることが可能である。
【００１４】
ここで、図２及び図３を参照して、生成された乱数が十分にランダムであるかどうかを決定することに関する詳細について説明する。図２を参照して、生成された乱数が十分にランダムであることを検証するために、乱数発生器１２の動作中、乱数が、本発明の一実施例によりリアルタイムにテストされる。乱数発生器１２によって生成されるランダムビットの連続するストリームを処理する間、検出器１４は、同じビットパターンの出現の間のギャップの関数的な平均を計算する。本発明の技法により実現されることができるさまざまな平均化法があることに留意すべきである。しかしながら、好適には、後述するような指数平均化が使用される。
【００１５】
図２に示すように、新しいランダムビットが処理されるたびに、予め決められた数ｋのビットが集められるまで、新しいビットが前のビットシーケンスに加えられる。２ｋの長さのｋビットパターンがありえ、ギャップは、同一のギャップパターンの出現の間で随意に大きくなりうる。図２は、説明の目的で、６ビットのブロックのグループを、ｋ＝６ビットのユニットとして示している。しかしながら、本発明は、ｋビットのいかなる正数もサポートすることができることが理解されなければならない。こうして、図面中の６ビットのグループは、本発明の範囲に制限を課すべきではない。ｋの好適な値は、６乃至１６ビットである。
【００１６】
ｋビットの任意の２つの同一パターンの間のギャップ長の平均関数を計算するために、指数平均アキュムレータＡが初期化される。同じビットパターンの繰り返される出現が検出されると、最後の出現と先行する出現との間のギャップが計算される。同じビットパターンの出現の間の個々のギャップは大きく異なることがありえ、こうして平均値をとることは、ランダム性の比較的安定した方策を与える。それぞれの異なるパターンの出現の間の平均ギャップが監視されなければならない場合、多くのカウンタ又はアキュムレータ（Ａ）を使用する必要があることに留意されたい。計算資源を節約するために、本発明の実施例において、異なるパターンの再度の出現の間のギャップの全てが、単一のアキュムレータ（Ａ）において平均される。ギャップのこのような関数ｆが、ギャップ長の代わりに平均される場合、テストのセンシティビティ（感度）は大幅に改善され、これは、個別のギャップ値の間の相違を強調する。大きいギャップ値が、完全にランダムなシーケンスにおいて時折生ずることがあり、こうして、関数ｆの自然な要求は、それが大きいギャップにあまりに重きを置いてはならないということである。そうでなければ、時折生じる大きいギャップによって、完全にランダムなシーケンスがテストに失敗するようになる。このような関数ｆは、任意に選択されることができる。２つの例は、ｌｏｇ（対数）関数及び任意のパラメータｍを有する最小関数ｍｉｎ（ｘ，ｍ）である。
【００１７】
実施例において、関数的なギャップ平均計算プロセスは連続的に走る。このように、アキュムレータＡは、オーバフローを避けるために周期的にクリアされなければならない。このために、本発明において指数平均化が利用される。指数平均化において、アキュムレータＡは、平均化加算が実施される前に特定の０＜α＜１ファクタにより低減されるので、大きくなりすぎることがない。すなわち、記憶及び実行時間を節約するために、本発明において、関数的なギャップ平均計算に対する指数平均化が適用される。指数平均化は、平均がアキュムレータＡにおいて更新されるたびに、古い平均された値が逓減効果をもたらすという特性を有する。
【００１８】
有用な平均化効果を与えるために、αの値は、１に近くなるように選択される。
α ＝ １ − １／ｎ，ｎ＞＞１
この場合、
【数１】
2005521157.tif 000003
であり、平均された値の半減期は、
【数２】
2005521157.tif 000004
である。ｎステップののち、最も古い平均された値の重みは、
【数３】
2005521157.tif 000005
になる。ここで、ｅは自然対数の底（オイラー定数）であり、従ってタームｎは、平均された値の自然寿命（natural life）と呼ばれることができる。平均されるべきすべての値が１である場合、アキュムレータ値は、
１ ＋ α ＋ α２ ＋ ... ＝ １／（１−α） ＝ ｎ
であり、すべてのビットが０である場合、アキュムレータ値は０である。指数平均の期待値は、個々の確率変数の期待値の指数平均であることに留意されたい。それらが、均一に分布する２進ビットである場合、期待値は、
１／２ ＋ １／２α ＋ １／２α２ ＋ ... ＝ ｎ／２
である。
【００１９】
本発明の実施例による指数ギャップ平均化は以下のようにして作用する。ギャップ長値ｘが得られるたびに、０及び１の間にあるファクタα（０＜α＜１）が、アキュムレータＡに乗算され、重み関数が、ギャップ長に適用され、結果として得られる値ｆ（ｘ）が、アキュムレータに加算される：
Ａｎｅｗ＝α・Ａｏｌｄ＋ｆ（ｘ）
ここで、ｘは、現在のギャップ長を表す。本発明の一実施例において、ｆ（ｘ）は、現在ギャップ長と予め決められた定数値ｍとの間の最小値を表す。カットオフ値ｍは、オペレータによる任意の特定の要求に対してテストを選択的に微調整するために調整されることができる。
【００２０】
一旦指数平均化がアキュムレータにおいて実施されると、指数平均化アキュムレータＡの値は、予め決められた受容レンジと比較される。すなわち、アキュムレータの値を予め決められた受容レンジ値と比較することによって、生成された乱数パターンが実質的にランダムであるかどうかが決定される。アキュムレータの値が、平均化プロセス中、予め決められたレンジ値外となる場合、生成された乱数は、十分にランダムでないと推測される。ここで、テストが繰り返し失敗するときにユーザに知らせるように、閾値がセットされてもよい。
【００２１】
実施例において、正確な境界は、理想のギャップ分布が得られる乱数の既知の良好なソースによる幅広いシミュレーションから得られるデータに基づいて、選択的に調整されることができる。このようなランダムシーケンスは市販されており、例えば「www.fourmilab.ch/hotbits」及び「lavarand.sgi.com」を含むさまざまなウェブソースからダウンロードされることができる。こうして、テストにおいて使用される実際のレンジは、生成されたランダムシーケンスが認可されないパーティにとって予測可能かどうかに関して異なるセンシティビティが選択されることができるように、オペレータによって選択的にセットされる。
【００２２】
図３は、本発明によるランダムシーケンスの統計的な品質をテストするための演算ステップを示すフローチャートである。矩形の要素はコンピュータソフトウェア命令を示し、ひし形の要素は、矩形のブロックによって表されるコンピュータソフトウェア命令の実行に影響を及ぼすコンピュータソフトウェア命令を表す。代替例として、処理及び決定ブロックは、例えばデジタル信号プロセッサ回路又は特定用途向け集積回路（ＡＳＩＣ）のような機能的に等価な回路によって実施されるステップを表す。多くのルーチンプログラム要素、例えばループ及び変数の初期化及び一時変数の使用は、図示されていないことに留意すべきである。ここに別段指示しない限り、記載するステップの特定のシーケンスは説明的なものにすぎず、本発明の精神から逸脱することなく変更されることができることが、当業者によって認められるであろう。
【００２３】
図３に示すように、ランダム性テストは、ステップ１２０にて乱数発生器１２によって生成されるランダムな２進ビットの連続するストリームを処理する。ステップ１４０にて、生成されたランダムビットは、関数的な平均ギャップ計算を受ける。この関数的な平均ギャップ計算において、指定された長さの同一のビットパターンの間の関数的なギャップ分布が計算され、更新される。同じビットパターンの間のギャップが見つけられるたびに、ステップ１４０にて、指数平均ギャップ値がアキュムレータＡにおいて更新される。ここで、前の関数的な指数平均ギャップ値は、ファクタα（０＜α＜１）によって低減され、関数ｆによって重み付けされるギャップ長が以下のように加算される：
Ａｎｅｗ＝α・Ａｏｌｄ＋ｆ（ｘ）
こうして、古い平均ギャップ値は逓減効果をもたらす。ここで、関数ｆは、オペレータによって選択される任意の関数でありえる。最も簡単な選択はｆ（ｘ）＝ｍｉｎ（ｘ，ｍ）であり、他の有用な選択はｆ（ｘ）＝ｌｏｇ（ｘ）である。
【００２４】
そののち、指数平均演算を受けた後の関数的な平均ギャップ値は、ステップ１６０にて予め決められた受容レンジと比較される。アキュムレータＡの値が、予め決められた受容レンジ外にある場合、ステップ２００にて、非ランダムパターンが検出されたと決定され、カウンタが１だけ増やされる。そうでない場合、カウンタは、ステップ１８０にてリセットされ、制御は、更なる乱数を生成するステップ１２０に戻る。ステップ２２０にて、カウンタの値が閾値より大きい場合、ステップ２４０にて、生成された乱数が十分にランダムでないという通知が送信される。代替例として、スイッチ１６は、後続のアプリケーションに対する乱数のフローを止めるように非活動化されることができる。生成された乱数が捨てられ、新しい乱数を生成することを含むプロセス全体が開始されることが可能である。ステップ２２０にて、カウンタの値が閾値を越えない場合、乱数を生成するプロセスが繰り返される。
【００２５】
上述したさまざまなステップは、アプリケーションプログラム内に組み込まれる機能にそれらのステップをプログラムすることによって実現されることができ、当分野のプログラマは、例えばＣ、Ｖｉｓｕａｌ  Ｂａｓｉｃ、Ｊａｖａ、Ｐｅｒｌ、Ｃ＋＋、などの言語の通常のプログラミング技法を使用してそれらを実現することができる。一具体例において、図３に記載する方法は、次のように（Ｃプログラミング言語を使用して）構成されることができる。説明を簡単にするため、浮動小数点演算を使用してテストが実現される。
【００２６】
付記：ＭＳ  Ｖｉｓｕａｌ  Ｃ  ｃｏｄｅ
【００２７】
テストの２つの変形例をここに挙げる。これらは、関数ｆ及び初期化並びに受容レンジ定数が異なる。プログラムは、その他の点では同じである。
2005521157.tif 000006
2005521157.tif 000007
2005521157.tif 000008
2005521157.tif 000009
2005521157.tif 000010
2005521157.tif 000011
【００２８】
本発明の好ましい実施例が、図示され記載されているが、本発明の真の範囲から逸脱することなく、さまざまな変更及び変形が施され、等価物がその構成要素に取って代わることができることが当業者によって理解されるであろう。更に、中心的範囲から逸脱することなく本発明の特定の状況及び教示に適応化するために、多くの変形がなされることができる。従って、本発明は、本発明を実行するために考えられる最良の形態として開示される特定の実施例に限定されるものではなく、本発明は、添付の特許請求の範囲内にあるすべての実施例を含むことが意図される。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施例による乱数生成モジュールの簡略ブロック図。
【図２】本発明の一実施例による乱数のシーケンス上の「ギャップ」の概念を示す図。
【図３】本発明の一実施例による生成された乱数の統計をテストする演算ステップを示すフローチャート。
【図１】
2005521157.tif 000012
【図２】
2005521157.tif 000013
【図３】
2005521157.tif 000014
【国際調査報告】
2005521157.tif 000015
2005521157.tif 000016
2005521157.tif 000017
2005521157.tif 000018
2005521157.tif 000019