(57)【特許請求の範囲】
【請求項１】
ランダムパルスを生成するランダムパルス発生部と、
クロック信号を生成するクロック発生部と、
初期値を生成するスクランブル部と、
前記ランダムパルスのうちの第１パルスが出力されてから前記ランダムパルスのうちの第２パルスが出力されるまでの期間に前記クロック信号として出力されたパルスのカウント数と前記初期値との和を乱数コード総数で除算した剰余を乱数コードとして出力するカウンタ部とを具備し、
前記初期値は、前記カウンタ部により前記乱数コードの１つ前に生成された他の乱数コードと前記初期値とで相関が発生しないように、前記他の乱数コードに基づいて生成される
乱数生成装置。
【請求項２】
請求項１において、
前記乱数コードは、ｎ桁（ｎ＝２，３，４，…）の２進法により表現され、
前記スクランブル回路は、前記他の乱数コードの各桁を交換して前記初期値を生成する
乱数生成装置。
【請求項３】
請求項２において、
前記スクランブル部は、前記他の乱数コードの上位ｉ桁目（ｉ＝１，２，３，…，ｎ）を前記乱数コードの上位（ｎ−ｉ＋１）桁目と交換して前記初期値を生成する
乱数生成装置。
【請求項４】
請求項１において、
前記スクランブル部は、テーブルを有し、
前記テーブルは、前記乱数コードと初期値とを対応付け、
前記スクランブル部は、前記テーブルを参照して前記他の乱数コードに対応した前記初期値を生成する
乱数生成装置。
【請求項５】
請求項１〜請求項４のいずれかにおいて、
前記ランダムパルス発生部は、ランダムに発生する事象に基づいて前記ランダムパルスを生成する
乱数生成装置。
【請求項６】
請求項５において、
前記ランダムパルス発生部は、抵抗器の熱雑音に基づいて前記ランダムパルスを生成する
乱数生成装置。
【請求項７】
請求項５において、
前記ランダムパルス発生部は、ダイオードの熱雑音に基づいて前記ランダムパルスを生成する
乱数生成装置。
【請求項８】
請求項５において、
前記ランダムパルス発生部は、放射性元素の壊変に基づいて前記ランダムパルスを生成する
乱数生成装置。
【請求項９】
請求項１〜請求項８のいずれかにおいて、
暗号化に使用される
乱数生成装置。
【請求項１０】
請求項１〜請求項８のいずれかにおいて、
シミュレーションに使用される
乱数生成装置。
【請求項１１】
ランダムパルスを生成すること、
クロック信号を生成すること、
初期値を生成すること
前記ランダムパルスのうちの第１パルスが出力されてから前記ランダムパルスのうちの第２パルスが出力されるまでの期間に前記クロック信号として出力されたパルスのカウント数と前記初期値との和を乱数コード総数で除算した剰余を乱数コードとして出力することとを具備し、
前記初期値は、前記乱数コードの１つ前に生成された他の乱数コードと前記初期値とで相関が発生しないように、前記他の乱数コードに基づいて生成される
乱数生成方法。
【請求項１２】
請求項１１において、
前記乱数コードは、ｎ桁（ｎ＝２，３，４，…）の２進法により表現され、
前記初期値は、前記他の乱数コードの各桁を交換して生成される
乱数生成方法。
【請求項１３】
請求項１２において、
前記初期値は、前記他の乱数コードの上位ｉ桁目（ｉ＝１，２，３，…，ｎ）を前記乱数コードの上位（ｎ−ｉ＋１）桁目と交換されて生成される
乱数生成方法。
【請求項１４】
第１乱数を生成するステップ、
初期値を生成するステップ、
前記第１乱数と前記初期値との和を所定値で除算した剰余を第２乱数として生成するステップとを具備し、
前記初期値は、前記第２乱数の１つ前に生成された他の第２乱数と前記初期値とで相関が発生しないように、前記他の第２乱数に基づいて生成される
乱数生成方法をコンピュータに実行させるためのプログラム。
【請求項１５】
請求項１４において、
前記他の第２乱数は、ｎ桁（ｎ＝２，３，４，…）の２進法により表現され、
前記初期値は、前記他の第２乱数の上位ｉ桁目（ｉ＝１，２，３，…，ｎ）を前記他の第２乱数の上位（ｎ−ｉ＋１）桁目と交換されて生成される
コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、乱数生成装置に関する。
【０００２】
【従来の技術】
数学的プログラムにより生成される乱数は、周期性または再現性が発生する可能性がある。このため、物理現象を利用して乱数を生成する乱数生成装置が望まれている。
【０００３】
特開平１１−１８４６７６号公報に示されている自然乱数生成カードは、原子核からランダムに放射されるα線を、ＰＩＮダイオードで検出してランダムなパルスを発生させ、このパルスを利用して真の乱数を生成させる。１個の崩壊現象により１個の物理乱数を生成させる新しい方式により、ごく微量な線量を用いて、必要とする速度で必要な桁数の物理乱数を生成させる。計測したパルス数と最初に設定した基準パルス数とを比較することにより不正の検定や使用期限を設定する。
【０００４】
このような自然乱数生成カードは、原子核の崩壊というランダムな現象を利用して人工的な操作や解読が不可能な物理乱数を生成し、個人の認証やデータの暗号化に利用される。不正使用の自己検定やカードの使用期限の設定などにセキュリティーの向上を図ることができる。
【０００５】
図１８に示されている公知の乱数生成装置は、ランダムパルス発生回路１０２、クロック発生回路１０３、時間計測器１０４および乱数保持回路１０５を備えている。時間計測器１０４は、カウンタ１０７を備えている。ランダムパルス発生回路１０２は、時間計測器１０４のカウンタ１０７に接続されている。クロック発生回路１０３は、時間計測器１０４のカウンタ１０７に接続されている。カウンタ１０７は、乱数保持回路１０５に接続されている。
【０００６】
ランダムパルス発生回路１０２は、周期を持たないパルスであるランダムパルス１０７を出力する。ランダムパルス発生回路１０２は、図示されていない抵抗器、増幅器およびコンパレータを備えている。抵抗器は、温度に応じて電子の熱運動により変動する電圧値ｖを出力する。増幅器は、この電圧値ｖを増幅してコンパレータに出力する。コンパレータは、増幅された電圧値ｖと一定値である閾値Ｖとを入力し、電圧値ｖが閾値Ｖ以上であるならばＨｉｇｈを出力し、電圧値ｖが閾値Ｖ未満であるならばＬｏｗを出力する。
【０００７】
閾値Ｖが十分に高いとき、電圧値ｖが閾値Ｖ以上になる確率は低くなり、コンパレータの出力はパルス状になる。このパルスは、ランダムパルス１０７としてランダムパルス発生回路１０２により出力される。このように熱雑音により生成されたランダムパルス１１は、隣り合う２つのパルスの時間間隔τが一様分布に従わないで指数分布に従う。
【０００８】
クロック発生回路１０３は、周期を有するパルスであるクロック信号１１２を出力する。カウンタ１０７は、ランダムパルス１１１とクロック信号１１２とを入力して、乱数コード１１３を出力する。カウンタ１０７は、ランダムパルス１１１の１個のパルスが入力されると、クロック信号１１２のパルスの個数であるカウント数ｃを０から２進法で計数し始める。カウンタ１０７は、ランダムパルス１１１の次のパルスが入力されると計数を停止して計数されたカウント数ｃの下位８桁を乱数コード１１３として出力する。
【０００９】
乱数コード１１３は、ランダムパルス１１１の隣り合う２つのパルスの時間間隔τに出力されたクロック信号１１２のパルスの個数を２５６で除算したときの剰余と一致している。すなわち、クロック数ｃが２５６を法として合同であるとき、それぞれに対応する乱数コード１１３は、一致している。
【００１０】
乱数保持回路１０５は、時間計測器１０４で生成された乱数コード１１３を順次記録し、記録された乱数コード１１３のうちで最古のコードを乱数生成装置１が搭載されている装置に適宜出力する。
【００１１】
図１９は、このように生成される乱数コード１１３の度数分布を示している。この度数分布は、乱数コード１１３が大きいほど度数が小さくなり、乱数コード１１３が一様分布に従わないことを示している。さらに、この度数分布は、乱数コード１１３の度数のバラツキ（標準偏差）が大きいことを示している。図２０は、乱数コード１１３のＦＦＴ結果を示している。このＦＦＴ結果は、スペクトルが存在しないことを示し、スペクトルが存在しないことは乱数コード１１３に周期性がないことを示している。物理現象に基づいて乱数を生成し、かつ、その乱数が一様分布に従う乱数生成装置が望まれている。
【００１２】
【発明が解決しようとする課題】
本発明の課題は、周期性または再現性がなく、かつ、一様分布に従う乱数を生成する乱数生成装置を提供することにある。
本発明の他の課題は、物理現象を利用して、一様分布に従う乱数を生成する乱数生成装置を提供することにある。
本発明のさらに他の課題は、隣り合う２つのパルスの時間間隔が一様分布に従わないランダムパルスに基づいて乱数を生成する乱数生成装置を提供することにある。
本発明のさらに他の課題は、一様分布に従わない乱数を一様分布に従う乱数に変換する乱数生成装置を提供することにある。
本発明のさらに他の課題は、各コードの度数の標準偏差が小さい乱数を生成する乱数生成装置を提供することにある。
【００１３】
【課題を解決するための手段】
その課題を解決するための手段が、下記のように表現される。その表現中に現れる技術的事項には、括弧（）付きで、番号、記号等が添記されている。その番号、記号等は、本発明の実施の複数・形態又は複数の実施例のうちの少なくとも１つの実施の形態又は複数の実施例を構成する技術的事項、特に、その実施の形態又は実施例に対応する図面に表現されている技術的事項に付せられている参照番号、参照記号等に一致している。このような参照番号、参照記号は、請求項記載の技術的事項と実施の形態又は実施例の技術的事項との対応・橋渡しを明確にしている。このような対応・橋渡しは、請求項記載の技術的事項が実施の形態又は実施例の技術的事項に限定されて解釈することを意味しない。
【００１４】
本発明による乱数生成装置は、ランダムパルス（１１）を生成するランダムパルス発生部（２）と、初期値（１４）を生成するスクランブル部（８）と、ランダムパルス（１１）の時間間隔（τ）と初期値（１４）とに基づいて乱数コード（１３）を生成するカウンタ部（７）とを具備している。初期値（１４）は、変動し、固定値ではない。このような乱数コード（１３）は、時間間隔（τ）が一様分布していないときでも、概ね一様分布に従う。
【００１５】
スクランブル部（８）は、カウンタ部（７）が過去に生成した乱数コード（１３）に基づいて初期値（１４）を生成することが回路規模を増加が小さい点で好ましい。乱数コード（１３）は、ｎ桁（ｎ＝２，３，４，…）の２進法により表現され、スクランブル部（８）は、カウンタ部（７）により最後に生成された乱数コード（１３）の各桁を交換して初期値（１４）を生成することが回路規模を増加が小さい点でさらに好ましい。このようなスクランブル部（８）としては、ｎ！通りが製造される。
【００１６】
スクランブル部（８）は、乱数コード（１３）の上位ｉ桁目（ｉ＝１，２，３，…，ｎ）を乱数コード（１３）の上位（ｎ−ｉ＋１）桁目と交換して初期値（１４）を生成する。すなわち、乱数コード（１３）の上位ｉ桁目は、初期値（１４）の上位（ｎ−ｉ＋１）桁目と一致している。このようなスクランブル部（８）は、配線の繋ぎ替えだけで製造され、回路規模を増加が小さい点で好ましく、乱数コード（１３）と初期値（１４）との相関が小さい点で好ましい。
【００１７】
スクランブル部（８′）は、テーブル（９）を有し、テーブル（９）は、乱数コード（１３）と初期値（１４）とを対応付け、スクランブル部（８′）は、テーブル（９）を参照してカウンタ部（７）が過去に生成した乱数コード（１３）に対応した初期値（１４）を生成する。このようなテーブル（９）としては、乱数コード（１３）の総数をＮ個とすると、Ｎ！通りが製造される。
【００１８】
クロック信号（１２）を生成するクロック発生部（３）を更に具備し、カウンタ部（７）は、時間間隔（τ）の期間にクロック信号（１２）のカウント数（ｃ）を計数し、初期値（１４）とカウント数（ｃ）との和を乱数コード（１３）の総数（Ｎ）で除算した剰余を乱数コード（１３）として出力することが好ましい。
【００１９】
ランダムパルス発生部（２）は、ランダムに発生する事象に基づいてランダムパルス（１１）を生成する。このとき、乱数コード（１３）は再現性がなく好ましい。ランダムパルス発生部（２）は、抵抗器の熱雑音に基づいてランダムパルス（１１）を生成することが好ましい。ランダムパルス発生部（２）は、ダイオードの熱雑音に基づいてランダムパルス（１１）を生成することが好ましい。ランダムパルス発生部（２）は、放射性元素の壊変に基づいてランダムパルス（１１）を生成することが好ましい。
【００２０】
本発明による乱数生成装置は、暗号化に使用されることが好ましい。本発明による乱数生成装置は、シミュレーションに使用されることが好ましい。
【００２１】
本発明による乱数生成装置は、ランダムパルス（３１）を生成するランダムパルス発生部（２２）と、ランダムパルス（３１）の時間間隔（τ）に基づいて第１コード（３３−１）を生成する第１カウンタ部（２７−１）と、ランダムパルス（３１）の時間間隔（τ）に基づいて第１コード（３３−１）とは異なる第２コード（３３−２）を生成する第２カウンタ部（２７−２）と、第１コード（３３−１）に基づいて第１乱数コードを生成し、第２コード（３３−２）に基づいて第２乱数コードを生成し、第１乱数コードと第２乱数コードとが交互に並べられた第３乱数コード（３４）を出力するスクランブル部（２８）とを具備する。第１コード（３３−１）はランダムパルス（３１）の時間間隔（τ）の期間に計数されたカウント数に対応し、第２コード（３３−２）はランダムパルス（３１）の時間間隔（τ）の期間に逆向きに計数されたカウント数に対応している。このような第３乱数コード（３４）の確率分布は、第３乱数コード（３４）の度数分布に傾きが生じない点で好ましい。
【００２２】
第１コード（３３−１）と第２コード（３３−２）は、ｎ桁（ｎ＝２，３，４，…）の２進法により表現され、スクランブル部（２８）は、第１コード（３３−１）の上位ｉ桁目（ｉ＝１，２，３，…，ｎ）を第１コード（３３−１）の上位（ｎ−ｉ＋１）桁目と交換して第１乱数コードを生成し、第２コード（３３−２）の上位ｊ桁目（ｊ＝１，２，３，…，ｎ）を第２コード（３３−２）の上位（ｎ−ｊ＋１）桁目と交換して第２乱数コードを生成することが好ましい。
【００２３】
スクランブル部（８′）は、テーブル（９）を有し、テーブル（９）は、第１コードと第１乱数コード（１３）とを対応付け、第２コードと第２乱数コード（１３）とを対応付け、スクランブル部（８′）は、テーブル（９）を参照して第１コードに対応した第１乱数コード（１３）を生成し、テーブル（９）を参照して第２コードに対応した第２乱数コード（１３）を生成することが好ましい。
【００２４】
本発明による乱数生成方法は、ランダムパルス（１１）を生成すること、変動して固定値ではない初期値（１４）を生成すること、ランダムパルス（１１）の時間間隔（τ）と初期値（１４）とに基づいて乱数コード（１３）を生成することとを具備する。このような乱数コード（１３）は、時間間隔（τ）が一様分布していないときでも、概ね一様分布に従う。
【００２５】
初期値（１４）は、過去に生成された乱数コード（１３）に基づいて生成されることが好ましい。乱数コード（１３）は、ｎ桁（ｎ＝２，３，４，…）の２進法により表現され、初期値（１４）は、最後に生成された乱数コード（１３）の各桁を交換して生成されることが好ましい。
【００２６】
初期値（１４）は、乱数コード（１３）の上位ｉ桁目（ｉ＝１，２，３，…）を乱数コード（１３）の上位（ｎ−ｉ＋１）桁目と交換されて生成される。このような初期値（１４）は、乱数コード（１３）との相関が小さい点で好ましい。
【００２７】
本発明による乱数発生方法をコンピュータに実行させるためのプログラムは、第１乱数を生成するステップ（ステップＳ１）、変動して固定値ではない初期値（１４）を生成するステップ（ステップＳ４）、第１乱数と初期値（１４）との和を所定値で除算した剰余を第２乱数として生成するステップ（ステップＳ３）とを具備することが好ましい。
【００２８】
初期値（１４）は、過去に生成された第１乱数に基づいて生成されることが好ましい。乱数を生成するアルゴリズムは一般的に大きく、初期値（１４）を第１乱数と独立に生成される乱数とするより、乱数コード（１３）を高速に生成することができる。
【００２９】
第１乱数は、ｎ桁（ｎ＝２，３，４，…）の２進法により表現され、初期値（１４）は、乱数コード（１３）の上位ｉ桁目（ｉ＝１，２，３，…）を乱数コード（１３）の上位（ｎ−ｉ＋１）桁目と交換されて生成されることが好ましい。
【００３０】
【発明の実施の形態】
図面を参照して、本発明による乱数生成装置の実施の形態を説明する。その乱数生成装置１は、図１に示されているように、ランダムパルス発生回路２、クロック発生回路３、時間計測器４および乱数保持回路５を１チップ内に備えている。時間計測器４は、カウンタ７とスクランブル回路８とを備えている。ランダムパルス発生回路２は、時間計測器４のカウンタ７に接続されている。クロック発生回路３は、時間計測器４のカウンタ７に接続されている。カウンタ７は、スクランブル回路８に接続され、乱数保持回路５に接続されている。スクランブル回路８は、カウンタ７に接続されている。
【００３１】
ランダムパルス発生回路２は、周期を持たないパルスであるランダムパルス１１を出力する。ランダムパルス発生回路２は、図示されていない抵抗器、増幅器およびコンパレータを備えている。抵抗器は、温度に応じて電子の熱運動により変動する電圧値ｖを出力する。増幅器は、この電圧値ｖを増幅してコンパレータに出力する。コンパレータは、増幅された電圧値ｖと一定値である閾値Ｖとを入力し、電圧値ｖが閾値Ｖ以上であるならばＨｉｇｈを出力し、電圧値ｖが閾値Ｖ未満であるならばＬｏｗを出力する。このようなランダムパルス発生回路２は、公知である。
【００３２】
閾値Ｖが十分に高いとき、電圧値ｖが閾値Ｖ以上になる確率は低くなり、コンパレータの出力はパルス状になる。このパルスは、ランダムパルス１１としてランダムパルス発生回路２により出力される。このように熱雑音により生成されたランダムパルス１１は、隣り合う２つのパルスの時間間隔τ（τ≧０）が一様分布に従わないで指数分布に従う。
【００３３】
なお、ランダムパルス発生装置は、抵抗器の代わりにダイオードを備えることができる。このように生成されたランダムパルス１１でも、一般的に隣り合う２つのパルスの時間間隔τは一様分布に従わない。
【００３４】
クロック発生回路３は、周期を有するパルスであるクロック信号１２を出力する。カウンタ７は、ランダムパルス１１、クロック信号１２およびスクランブル回路８から出力される初期値１４を入力して、乱数コード１３を出力する。カウンタ７は、ランダムパルス１１の１個のパルスが入力されると、スクランブル回路８から初期値１４を取得する。カウンタ７は、クロック信号１２のパルスが入力される毎に、初期値１４に１を加算する。その加算結果は、２５６になると、０にされ、再度クロック信号１２のパルスが入力される毎に、１が加算される。カウンタ７は、ランダムパルス１１の次のパルスが入力されると、加算結果を乱数コード１３として出力する。すなわち、このとき、乱数コード１３は、ランダムパルス１１の隣り合う２つのパルスの時間間隔τの期間に生成されたクロック信号１２のパルスの個数であるカウント数ｃと初期値１４との和である。
【００３５】
乱数コード１３は、初期値１４とカウント数ｃとの和を２５６で除算したときの剰余である。すなわち、２５６を法として合同である２つの和にそれぞれ対応する２つの乱数コード１３は、一致している。
【００３６】
スクランブル回路８は、乱数コード１３に基づいて初期値１４を生成してカウンタ７に出力する。すなわち、スクランブル回路８は、乱数コード１３の１ビット目と８ビット目とを交換し、２ビット目と７ビット目を交換し、３ビット目と６ビット目を交換し、４ビット目と５ビット目を交換して初期値１４を生成する。このようなスクランブル回路８は、配線を繋ぎかえるだけで構成され、回路規模の増加はほとんどない。
【００３７】
なお、スクランブル回路８が実行する交換は、乱数コード１３と初期値１４とを１対１に対応させるならどのようなものでも可能であり、このとき、８！（＝４０３２０）通りの交換が可能である。この全ての交換が有効ではなく、前後で相関が発生するような交換は好ましくない。
【００３８】
乱数保持回路５は、時間計測器４で生成された乱数コード１３を順次記録し、記録された乱数コード１３のうちで最古のコードを乱数生成装置１が搭載されている装置に適宜出力し、そのコードを削除する。
【００３９】
一般に抵抗器には、その温度に応じて電子の熱運動（ブラウン運動）が発生し、その抵抗器はその熱雑音により、図２に示されているように、ランダムに変動する電圧値ｖを発生する。その電圧値ｖｎ（Ｖ）の２乗平均＜ｖｎ２＞は、ボルツマン定数ｋＢ（Ｊ／Ｋ）、絶対温度Ｔ（Ｋ）、抵抗Ｒ（Ω）、帯域ΔＦ（Ｈｚ）を用いて次式：
【数１】
0004521708.tif 000002
により表現される。電圧値ｖｎがフーリエ変換されると、そのスペクトルは、図３に示されているように、フラットになる。このことは、熱雑音により変動する電圧値ｖｎは、ホワイトノイズであることを示している。
【００４０】
各瞬間の電圧値ｖｎの確率密度関数ｆ（ｖｎ）は、図４に示されているように、ガウス分布に従い、その標準偏差σは、次式：
【数２】
0004521708.tif 000003
により表現される。
【００４１】
本発明による乱数生成装置１のランダムパルス発生回路２では、ランダムパルス１１の信号源として電圧値ｖｎを増幅した電圧値ｖを用いている。増幅の過程では、回路により帯域が制限されるため、電圧値ｖの確率密度関数ｆ′（ｖ）は、電圧値ｖｎの確率密度関数ｆ（ｖｎ）と異なっているが、電圧値ｖがランダムに変動することは変化しない。このため、電圧値ｖは、図５に示されているように、概ねガウス分布に従う。
【００４２】
電圧値ｖの確率密度関数ｆ′（ｖ）が適当に与えられたとき、ある瞬間の電圧値ｖがある電圧値である閾値Ｖ以上である事象の確率ｐは、ｖ軸２１、ｖ＝Ｖにより表現される直線２２および関数ｆ′（ｖ）により表現される曲線２３により囲まれた領域２４の面積により決定する。電圧値ｖの確率分布が正確に求められれば、この確率は、計算可能である。増幅の過程で複雑な帯域制限を受けた後の確率分布は、計算により求めることが困難である。しかしながら、電圧値ｖが閾値Ｖを越える事象の確率ｐは、閾値Ｖが大きくなれば小さくなり、閾値Ｖが小さくなれば大きくなることにはかわりない。
【００４３】
閾値Ｖが十分に高く設定されるとき、確率ｐは非常に小さくなる。このとき、ランダムパルス発生回路２の出力は、パルス状になる。さらに、ランダムパルス発生回路２の出力をｎ回（ｎ＝１，２，３，…）観測する場合で、観測回数ｎが非常に多いとき、ｎ回の観測中にパルスが観測される回数ｋ（ｋ＝１，２，３，…；ｋ≦ｎ）は、ポアソン分布に従う。パルスが観測される回数ｋを確率変数Ｘとする確率Ｐ（Ｘ＝ｋ）は、定数λ（ただし、λ＝ｎｐ）を用いて次式：
【数３】
0004521708.tif 000004
により表現される。ｎ回の観測でパルスが観測される回数ｋの期待値Ｅ（Ｘ）は、次式：
【数４】
0004521708.tif 000005
により表現される。すなわち、ｎ回の観測中にパルスは、平均λ回観測される。
【００４４】
単位時間（１秒間）当たりにｎ回の観測が実施されるならば、観測時間Ｔ（秒）の期間内には（ｎ×Ｔ）回の観測が実施される。このとき、観測時間Ｔ内にパルスが観測される回数ｋを確率変数Ｙとする確率Ｐ′（Ｙ＝ｋ）は、定数λ（ただし、λ′＝ｎＴｐ＝λＴ）を用いて次式：
【数５】
0004521708.tif 000006
により表現され、観測時間Ｔ内にパルスが観測される回数ｋの期待値Ｅ（Ｙ）は、次式：
【数６】
0004521708.tif 000007
により表現される。
【００４５】
観測時間Ｔ内にパルスが観測されない事象の確率Ｐ′（Ｙ＝０）は、次式：
【数７】
0004521708.tif 000008
により表現される。ところで、パルスが観測されないときの観測時間Ｔを確率変数Ｚとする確率Ｇ（Ｚ≧Ｔ）は、ランダムパルス１１の隣り合う２つのパルスの時間間隔τが観測時間Ｔより大きくなる事象の確率であり、確率Ｐ′（Ｙ＝０）と一致し、次式：
【数８】
0004521708.tif 000009
が成立する。
【００４６】
確率Ｇ（Ｚ≧Ｔ）は、隣り合う２つのパルスの時間間隔τの確率密度関数ｇ（τ）を仮定して、次式：
【数９】
0004521708.tif 000010
により表現される。その余事象である時間間隔τが観測時間Ｔ未満になる事象の確率Ｇ（０≦Ｚ＜Ｔ）は、次式：
【数１０】
0004521708.tif 000011
により表現される。
【００４７】
さらに確率Ｇ（０≦Ｚ＜Ｔ）は、観測時間Ｔ内にパルスが観測される事象の確率Ｐ′（Ｙ＞０）と一致し、次式：
【数１１】
0004521708.tif 000012
が成立する。さらに観測時間Ｔ内にパルスが観測される事象は、観測時間Ｔ内にパルスが観測されない事象の余事象であることより、次式：
【数１２】
0004521708.tif 000013
が成立する。
【００４８】
数１０の式、数１１の式および数１２の式により、次式：
【数１３】
0004521708.tif 000014
が導出され、数１３の式の辺々を観測時間Ｔで微分することにより、次式：
【数１４】
0004521708.tif 000015
が導出される。数１４の式は、時間間隔τの確率分布関数ｇ（τ）を表現し、時間間隔τは、図６に示されているように、指数分布に従うことを示している。
【００４９】
時間間隔τの期待値Ｅ（τ）は、時間間隔τがτ≧０で定義されていることより、次式：
【数１５】
0004521708.tif 000016
により表現される。数１５の式は、時間間隔τの平均が１／λであり、単位時間（１秒）当たり平均λ回パルスが観測されることを示して、数６の式と整合が取れている。
【００５０】
隣り合う２つのパルスの時間間隔τが周期Ｔｃ（秒）のクロック信号１２のパルスの個数であるカウント数ｃにより計測されるとき、時間間隔τの期間に計数されるカウント数ｃを確率変数Ｃとする確率Ｑ（Ｃ＝ｃ）は、次式：
【数１６】
0004521708.tif 000017
により表現される。図７は、カウント数ｃの確率分布を示している。カウント数ｃの出現は、指数分布に従っている。
【００５１】
従来例による乱数生成装置１０１のように、カウント数ｃを乱数コード１１３の総数Ｎで除算した剰余を乱数コード１１３に対応させるとき、カウント数ｃに対応して生成される乱数コード１１３とカウント数（ｃ＋Ｎ）に対応して生成される乱数コード１１３は、一致している。カウント数ｃが生成される事象の確率とカウント数（ｃ＋Ｎ）が生成される事象の確率との比ｒは、数１６の式を用いて次式：
【数１７】
0004521708.tif 000018
により表現される。数１７の式は、比ｒが定数であることを示している。
【００５２】
コードｗＡに対応するカウント数ｃの最小値であるカウント数ｃＡ（ｃＡ＜２５６）が出現する確率ＱＡは、次式：
【数１８】
0004521708.tif 000019
により表現される。さらに、乱数コード１１３としてコードｗＡが出現する事象の確率Ｒ（Ｗ＝ｗＡ）は、次式：
【数１９】
0004521708.tif 000020
により表現される。
【００５３】
同様にして、コードｗＡと異なるコードｗＢに対応するカウント数ｃの最小値であるカウント数ｃＢ（ｃＢ＜ｃＡ）が出現する確率ＱＢは、次式：
【数２０】
0004521708.tif 000021
により表現される。さらに、乱数コード１１３としてコードｗＢが出現する事象の確率Ｒ（Ｗ＝ｗＢ）は、次式：
【数２１】
0004521708.tif 000022
により表現される。
【００５４】
確率Ｒ（Ｗ＝ｗＡ）と確率Ｒ（Ｗ＝ｗＢ）との比ｓは、次式：
【数２２】
0004521708.tif 000023
により表現される。数２２の式は、異なる２つの乱数コード１１３が出現する確率は、異なっていることを示している。
【００５５】
図８は、乱数コード１１３の確率分布を示している。この確率分布は、確率Ｒが指数分布に従っていることを示し、乱数コード１１３が大きいほどその確率Ｒが小さくなることを示している。式（ｃＡ−ｃＢ）の値は、次式：
【数２３】
0004521708.tif 000024
により表現されることより、比ｓの下限ｓ′は、クロック信号１２の周波数ｆ（Ｈｚ）を用いて次式：
【数２４】
0004521708.tif 000025
により表現される。下限ｓ′の値は、１に近いほど乱数コード１１３の一様性が大きいことを示している。数２４の式は、乱数コード１１３が一様ではないことを示し、定数λの値が小さく、乱数コード１１３の総数Ｎが小さく、クロック信号１２の周波数ｆが大きいほど、乱数コード１１３の一様性が大きいことを示している。定数λの値は、閾値Ｖを大きくすることにより、小さくすることができる。
【００５６】
従来例の乱数生成装置１０１では、定数λ、乱数コード１１３の総数Ｎ、クロック信号１２の周波数ｆをある範囲に限定して使用している。たとえば、定数λがλ＝１００（回／秒）、乱数コード１１３の総数ＮがＮ＝２５６、クロック信号１２の周波数ｆがｆ＝１３（ＭＨｚ）＝１３×１０６（Ｈｚ）のとき、下限ｓ′はｓ′≒０．９９８である。アプリケーションによっては、これでも十分に使用することができる。
【００５７】
定数λの値は、閾値Ｖにより制御することができるが、電圧値ｖの確率分布関数ｆ（ｖ）が正確に把握されないために、正確に制御することができない。さらに、抵抗器はアナログ回路であり、熱雑音の量は温度や製造偏差により所定の値に保持することができない。閾値Ｖも製造偏差により変化する。このため、一様な乱数コードを生成することができないことがある。
【００５８】
本実施の形態による乱数コード１３は、カウント数ｃと変動する初期値１４との和により生成される。このため、カウント数ｃは乱数コード１３に対応しないで、乱数コード１３は一様分布に従う。さらに、乱数コード１３をビット逆転した値が次の乱数コードを生成するための初期値１４に用られていることより、乱数コード１３には、相関が現れない。
【００５９】
図９は、本発明による乱数生成装置により生成された乱数コード１３の度数分布を示している。この度数分布は、乱数コード１３の度数分布に傾きが生じないことを示し、乱数コード１３の度数のバラツキ（標準偏差）が小さいことを示している。すなわち、この度数分布は、乱数コード１３が概ね一様分布に従うことを示している。
【００６０】
図１０は、乱数コード１３のＦＦＴ結果を示している。このＦＦＴ結果は、スペクトルが存在しないことを示し、スペクトルが存在しないことは乱数コード１３に周期性がないことを示している。図１１は、乱数コード１３の隣り合うコードのＸ−Ｙプロットを示している。このＸ−Ｙプロットは、何らかの構造を持った模様を有しておらず、隣り合うコードに相関がないことを示している。
【００６１】
乱数生成装置１は、再現性がなく、かつ、一様性を有する乱数が必要であるアプリケーションに利用される。たとえば、個人の認証やデータの暗号化に利用され、このとき、不正使用の自己検定やセキュリティーの向上を図ることができる。乱数生成装置１は、さらに、モンテカルロ法に例示されるシミュレーションに利用される。
【００６２】
なお、本発明による乱数生成装置１に使用されるランダムパルス発生回路２は、抵抗器の熱雑音に限らず、ランダムに発生する他の物理現象に基づいてランダムパルス１１を生成することができる。
【００６３】
ランダムパルス発生回路の実施の他の形態は、放射線を放射する放射線源と、放射線を検出するＰＩＮダイオードと、増幅器とを備えている。放射線源としては、２４１Ａｍ、２４４Ｃｍ、２０８Ｐｏが例示される。ＰＩＮダイオードは、放射線源から放射される放射線を電流に変換する。増幅器は、ＰＩＮダイオードが出力した電流を電圧のパルスに変換し、ランダムパルスとして出力する。このようなランダムパルス発生回路は公知である。このように生成されたランダムパルスでも、一般的に隣り合う２つのパルスの時間間隔τは一様分布に従わない。
【００６４】
図１２は、スクランブル回路８の実施の他の形態を示している。そのスクランブル回路８′は、テーブル９を備えている。テーブル９は、乱数コード１３を初期値１４に１対１に対応づけている。乱数コード１３の総数Ｎが２５６個であるとき、このテーブル９としては、２５６！通りが作成されることができる。なお、２５６！通りのテーブル９の全てが有効ではなく、変換の前後で相関が発生するようなテーブル９は好ましくない。スクランブル回路８は、乱数コード１３が入力されるとテーブル９を参照し、入力された乱数コード１３に対応した初期値１４をカウンタ７に出力する。
【００６５】
このようなスクランブル回路８′は、隣り合うカウント数ｃに相関が出現する場合に、適当にテーブル９を作成することにより、乱数コード１３に相関を打ち消すことができる。スクランブル回路８′は、先の実施の形態によるスクランブル回路８より回路規模が大きい。回路規模の増加を気にしないのであれば、このテーブル９は、乱数コード１３の相関を打ち消すために有効である。
【００６６】
図１３は、本発明による乱数生成装置の実施の他の形態を示している。その乱数生成装置２０は、ランダムパルス発生回路２２、クロック発生回路２３、時間計測器２４および乱数保持回路２５を備えている。時間計測器２４は、カウンタ２７−１、カウンタ２７−２、およびスクランブル回路２８を備えている。ランダムパルス発生回路２２は、時間計測器２４のカウンタ２７−１に接続され、カウンタ２７−２に接続されている。クロック発生回路２３は、時間計測器２４のカウンタ２７−１に接続され、カウンタ２７−２に接続されている。カウンタ２７−１は、スクランブル回路２８に接続されている。カウンタ２７−２は、スクランブル回路２８に接続されている。スクランブル回路２８は、乱数保持回路２５に接続されている。
【００６７】
ランダムパルス発生回路２２は、周期を持たないパルスであるランダムパルス３１を出力する。クロック発生回路２３は、周期を有するパルスであるクロック信号３２を出力する。
【００６８】
カウンタ２７−１は、ランダムパルス３１とクロック信号３２とを入力して、乱数コード３３−１を出力する。カウンタ２７−１は、ランダムパルス３１の１個のパルスが入力されると、クロック信号３２のパルスの個数であるカウント数ｃを０から２進法で計数し始める。カウンタ２７−１は、ランダムパルス３１の次のパルスが入力されると計数を停止して計数されたカウント数ｃの下位８桁を乱数コード３３−１として出力する。
【００６９】
カウンタ２７−２は、ランダムパルス３１とクロック信号３２とを入力して、乱数コード３３−２を出力する。カウンタ２７−２は、ランダムパルス３１の１個のパルスが入力されると、クロック信号３２のパルスの個数であるカウント数ｃを０から２進法で逆向きに計数し始める。すなわち、カウント数ｃは、クロック信号３２のパルスがカウンタ２７−２に入力される度に１が減算される。この減算では、下位９桁目以上の桁から減算しないで繰り下げを実行する。このような減算により、カウント数ｃは、常に正数になる。カウンタ２７−２は、ランダムパルス３１の次のパルスが入力されると計数を停止して計数されたカウント数ｃの下位８桁を乱数コード３３−２として出力する。
【００７０】
スクランブル回路２８は、２つの動作を交互に繰り返す。その１つの動作は、乱数コード３３−１に基づいて乱数コード３４を生成して乱数保持回路２５に出力する。すなわち、スクランブル回路２８は、乱数コード３３−１の１ビット目と８ビット目とを交換し−１ビット目と７ビット目を交換し、３ビット目と６ビット目を交換し、４ビット目と５ビット目を交換して乱数コード３５を生成する。スクランブル回路２８は、生成された乱数コード３５を乱数保持回路２５に出力する。
【００７１】
もう１つの動作は、乱数コード３３−２に基づいて乱数コード３４を生成して乱数保持回路２５に出力する。すなわち、スクランブル回路２８は、乱数コード３３−２の１ビット目と８ビット目とを交換し、２ビット目と７ビット目を交換し、３ビット目と６ビット目を交換し、４ビット目と５ビット目を交換して乱数コード３５を生成する。スクランブル回路２８は、生成された乱数コード３５を乱数保持回路２５に出力する。
【００７２】
乱数保持回路２５は、時間計測器２４で生成された乱数コード３３−１を順次記録し、記録された乱数コード３３−１のうちで最古のコードを乱数生成装置１が搭載されている装置に適宜出力する。
【００７３】
図１４は、乱数コード３３−１と乱数コード３３−２とを合わせた度数分布を示している。この度数分布は、従来例による乱数コード１１３の度数分布に示されるコードが大きいほど度数が小さくなる傾向が緩和されていることを示している。図１５は、乱数コード３４の度数分布を示している。この度数分布は、乱数コード３４がコードの大きさにより、度数が変化する傾向がないことを示している。しかし、乱数コード３４の度数の標準偏差および最大値と最小値の差が従来例による乱数コード１１３のそれと概ね等しく、一様性は、改善されていない。図１６は、乱数コード３４のＦＦＴ結果を示している。このＦＦＴ結果は、スペクトルが存在しないことを示し、スペクトルが存在しないことは乱数コード３４に周期性がないことを示している。本実施の形態による乱数生成装置２１は、乱数コード３４の一様性により問題が発生しない機器には十分に使用することができる。
【００７４】
図１７は、本発明による乱数生成方法の実施の形態を示している。まず、初期値として０が代入される（ステップＳ１）。初期値として、０以外の数値を代入することもできる。つぎに、第１乱数が生成される（ステップＳ２）。この第１乱数は、数学的アルゴリズムにより生成された疑似乱数である。第１乱数は、情報処理装置の外部に設けられた乱数生成装置により物理現象に基づいて生成されることもできる。第１乱数は、８桁の２進法により表現され、２５６個のコードから形成されている。この第１乱数は、一様性を有していなくても構わない。
【００７５】
つぎに、第１乱数は、初期値と加算され、その和が第２乱数として出力される（ステップＳ３）。その和は、２５６以上であるときに、２５６で除算され、その剰余が第２乱数として出力される。つぎに、第２乱数に基づいて、初期値が生成される（ステップＳ４）。このとき、第２乱数は８桁の２進法により表現され、第２乱数の１桁目と８桁目とを交換し、２桁目と７桁目を交換し、３桁目と６桁目を交換し、４桁目と５桁目を交換して初期値を生成する。
【００７６】
なお、初期値は、第２乱数コードと１対１対応し、２５６！通りの初期値の生成方法が考えられる。２５６！通りのテーブル９の全てが有効ではなく、変換の前後で相関が発生するような初期値の生成方法は好ましくない。
【００７７】
初期値が生成されると、ステップＳ２〜ステップＳ４から形成されるループに入る。このように生成される第２乱数は、第１乱数が一様性を有していないときでも、本発明による乱数生成装置と同様に概ね一様性を有する。
【００７８】
本発明による乱数生成方法は、コンピュータに実行させるためのプログラムに変換され、パーソナルコンピュータに例示される情報処理装置に搭載されることができる。このプログラムが搭載された情報処理装置は、本発明による乱数生成装置と同様に概ね一様性を有する乱数を生成することができる。
【００７９】
【発明の効果】
本発明による乱数生成装置は、一様分布に従う乱数を生成することができる。
【図面の簡単な説明】
【図１】図１は、本発明による乱数生成装置の実施の形態を示すブロック図である。
【図２】図２は、抵抗器の熱雑音による電圧値を示すグラフである。
【図３】図３は、抵抗器の熱雑音による電圧値のＦＦＴ結果を示すグラフである。
【図４】図４は、抵抗器の熱雑音による電圧値の確率密度関数を示すグラフである。
【図５】図５は、抵抗器の熱雑音による増幅後の電圧値の確率密度関数を示すグラフである。
【図６】図６は、隣り合うランダムパルスの時間間隔の確率密度関数を示すグラフである。
【図７】図７は、カウント数の確率分布を示すグラフである。
【図８】図８は、乱数コードの確率分布を示すグラフである。
【図９】図９は、乱数コードの度数分布を示すグラフである。
【図１０】図１０は、乱数コードのＦＦＴ結果を示すグラフである。
【図１１】図１１は、隣り合う乱数コードの相関を示すグラフである。
【図１２】図１２は、スクランブル回路の実施の他の形態を示すブロック図である。
【図１３】図１３は、本発明による乱数生成装置の実施の他の形態を示すブロック図である。
【図１４】図１４は、２個のカウンタにより生成される乱数コードの度数分布を示すグラフである。
【図１５】図１５は、乱数コードの度数分布を示すグラフである。
【図１６】図１６は、乱数コードのＦＦＴ結果を示すグラフである。
【図１７】図１７は、本発明による乱数生成方法の実施の形態を示すフローチャートである。
【図１８】図１８は、公知の乱数生成装置の実施の形態を示すブロック図である。
【図１９】図１９は、乱数コードの度数分布を示すグラフである。
【図２０】図２０は、乱数コードのＦＦＴ結果を示すグラフである。
【符号の説明】
１…乱数生成装置
２…ランダムパルス発生回路
３…クロック発生回路
４…時間計測器
５…乱数保持回路
７…カウンタ
８…スクランブル回路
１１…ランダムパルス
１２…クロック信号
１３…乱数コード
１４…初期値
【図１】
0004521708.tif 000026
【図２】
0004521708.tif 000027
【図３】
0004521708.tif 000028
【図４】
0004521708.tif 000029
【図５】
0004521708.tif 000030
【図６】
0004521708.tif 000031
【図７】
0004521708.tif 000032
【図８】
0004521708.tif 000033
【図９】
0004521708.tif 000034
【図１０】
0004521708.tif 000035
【図１１】
0004521708.tif 000036
【図１２】
0004521708.tif 000037
【図１３】
0004521708.tif 000038
【図１４】
0004521708.tif 000039
【図１５】
0004521708.tif 000040
【図１６】
0004521708.tif 000041
【図１７】
0004521708.tif 000042
【図１８】
0004521708.tif 000043
【図１９】
0004521708.tif 000044
【図２０】
0004521708.tif 000045