(57)【要約】【課題】効率よく一様な乱数を生成する乱数生成装置を提供する。【解決手段】本発明に係る乱数生成装置は、乱数を生成する乱数生成部５０１と、前記乱数生成手段により生成された乱数と、加算部５０２により生成された加算結果との加算を任意の回数繰り返す補正処理手段と、を備えることを特徴とする。【選択図】  図１０（ａ）
2008269314.tif 000002
【特許請求の範囲】
【請求項１】
乱数を生成する乱数生成手段と、
前記乱数生成手段により生成された乱数と、加算手段により生成された単純加算結果との加算を任意の回数繰り返すことによって複合加算結果を得る補正処理手段と、
を備えることを特徴とする乱数生成装置。
【請求項２】
前記補正処理手段は、前記複合加算結果と前記乱数生成手段により生成された乱数との排他論理和を計算すること、
をさらに特徴とする請求項１に記載の乱数生成装置。
【請求項３】
ノイズを発生するダイオードと、
前記ダイオードに電流を供給する定電流源と、
前記ダイオードの出力電圧を取り出すように接続され、前記ダイオードの動作インピーダンスと異なる値の抵抗値を持つ入力抵抗と、
を有するノイズ源を備えたことを特徴とする乱数生成装置。
【請求項４】
前記入力抵抗の抵抗値は、ダイオードの動作インピーダンスよりも小さい値であること、を特徴とする請求項３に記載の乱数生成装置。
【請求項５】
前記入力抵抗の抵抗値は、ダイオードの動作インピーダンスよりも大きい値であること、を特徴とする請求項３に記載の乱数生成装置。
【請求項６】
前記ノイズ源は、前記ダイオードの出力電圧を観測する電圧観測手段と、前記電圧観測手段により観測された結果から前記定電流源の供給電流を制御する電流制御手段と、を有する、
ことを特徴とする請求項３に記載の乱数生成装置。
【請求項７】
ノイズを発生するダイオードと、
前記ダイオードに電流を供給する定電流源と、
前記ダイオードの電流出力を観測する電流観測手段と、を有し、
前記ダイオードの出力電流の積分値を観測し、前記出力電流の積分値が一定の値に達するときに、クロック信号の値を乱数とする、
ことを特徴とする乱数生成装置。
【請求項８】
乱数を生成する乱数生成手段と、
浮動小数点型格納形式の仮数部に格納された「１」のうち最も上位の「１」の桁を把握し、前記「１」を仮数部の最上位ビットに来るようにシフト操作を行い、シフト操作した分だけ前記浮動小数点型格納形式の指数部でカウントダウンを行う変換手段を有する区間変換手段と、
乱数の一様性を補正処理する補正処理手段と、
を備えることを特徴とする乱数生成装置。
【請求項９】
乱数を生成する乱数生成ステップと、
前記乱数生成手段により生成された乱数と、加算手段により生成された単純加算結果との加算を任意の回数繰り返すことによって複合加算結果を得る補正処理ステップと、
を備えることを特徴とする乱数生成方法。
【請求項１０】
前記補正処理ステップは、前記複合加算結果と前記乱数生成手段により生成された乱数との排他論理和を計算するステップ、
をさらに備えることを特徴とする請求項９に記載の乱数生成方法。
【請求項１１】
ダイオードに一定の電流を供給するステップと、
前記ダイオードに第１の微小変動する電流が発生するステップと、
前記ダイオードの動作インピーダンスと異なる値の抵抗値を持つ入力抵抗に前記第１の微小変動する電流の影響による第２の微小変動する電流が流れるステップと、
を備えることを特徴とする乱数生成方法。
【請求項１２】
前記入力抵抗の抵抗値は、ダイオードの動作インピーダンスよりも小さい値であること、を特徴とする請求項１１に記載の乱数生成方法。
【請求項１３】
前記入力抵抗の抵抗値は、ダイオードの動作インピーダンスよりも大きい値であること、を特徴とする請求項１１に記載の乱数生成方法。
【請求項１４】
前記ダイオードの出力電圧を観測する電圧観測ステップと、
前記電圧観測手段により観測された結果から前記定電流源の供給電流を制御する電流制御ステップと、
をさらに備えることを特徴とする請求項１１に記載の乱数生成方法。
【請求項１５】
ダイオードに一定の電流を供給するステップと、
前記ダイオードの電流出力を観測する電流観測ステップと、
前記ダイオードの出力電流の積分値を観測し、前記出力電流の積分値が一定の値に達するときに、クロック信号の値を乱数とするステップと、
を備えることを特徴とする乱数生成方法。
【請求項１６】
乱数を生成する乱数生成ステップと、
浮動小数点型格納形式の仮数部に格納された「１」のうち最も上位の「１」の桁を把握し、前記「１」を仮数部の最上位ビットに来るようにシフト操作を行い、シフト操作した分だけ前記浮動小数点型格納形式の指数部でカウントダウンを行う変換ステップと、
乱数の一様性を補正処理する補正処理ステップと、
を備えることを特徴とする乱数生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一様な乱数を生成するための乱数生成装置および乱数生成方法に関する。
【背景技術】
【０００２】
乱数生成装置には、乱数の元となる物理現象（ノイズ源）と、アナログの物理現象を電気的に観測して計算機が認識できるディジタル情報に変換する機能、物理現象から取り出された乱数の品質を改善する機能の３つの機能が必要である。
【０００３】
１）ノイズ源について
図１３（ａ）は、ツェナーダイオードの通常の使い方が示されている。ツェナーダイオードＤは、ツェナー電圧Ｖｚが一定であることを利用して定電圧を取り出すときに用いられる。
【０００４】
図１３（ｂ）は、ツェナーダイオードの雑音発生の理由が示されている。電流Ｉｚが増加することにより図１３（ａ）に示す抵抗Ｒが電圧降下し、出力電圧Ｖｏｕｔがツェナー電圧Ｖｚよりも小さくなるとツェナーダイオードＤがオフとなり電流Ｉｚが流れなくなる。電流Ｉｚが流れなくなると抵抗Ｒの電圧降下がなくなるのでツェナーダイオードＤの電圧Ｖｏｕｔが上昇し、ツェナーダイオードＤがオンとなり抵抗Ｒに電流Ｉｚが流れる。この動作の繰り返しがノイズとして観測される（例えば非特許文献１参照）。
【０００５】
２）ディジタル情報について
ディジタル情報を計算機が処理する場合、決められた型がある。例えば、ＩＥＥＥの規格には整数型、単精度浮動小数点型、倍精度浮動小数点型などの型である。  
物理現象から取り出された乱数は整数型として生成するのが一般的である。ビット数がＮの場合、区間［０，２Ｎ−１］の整数型として処理することになるが、乱数を多用するシミュレーションの分野においては、区間［０，１）の浮動小数点型として扱うことが多い。この場合、整数型の乱数から浮動小数点型の乱数に型の変換を行う必要がある。この変換をする際、通常は、変換対象とする整数型の乱数の値をｖとすると、ｖ/２ｎを実行する。
【０００６】
３）物理現象から取り出された乱数の品質改善について
物理現象から取り出された乱数は、乱数の品質として一様性が問題になることが多い。物理現象の僅かな偏りがそのまま乱数の品質に影響することがあるため、偏りを少なくする補正が必要である。この方法の一つに、くくり合わせ法と呼ばれる補正方法がある。  
くくり合わせ法は、０と１の生成確率がそれぞれ正確に１／２の補正データとの排他論理和を求めて改善する方法である（例えば特許文献１参照）。
【特許文献１】特開２０００−２５９３９５号公報
【非特許文献１】島田義人、「はじめての電子回路工作」、ＣＱ出版、トランジスタ技術  ２００７年１月号、Ｐ２２６
【発明の開示】
【発明が解決しようとする課題】
【０００７】
１）ノイズ源における課題ついて
非特許文献１に提案されている技術では、一定電圧以下ではツェナーダイオードがオフとなる。このため、正規分布となるゆらぎ成分を観測することは困難である。
【０００８】
２）ディジタル情報における課題について
例えば、区間［０，２Ｎ−１］の整数型の乱数を区間［０，１）の浮動小数点型の乱数に変換する際、ｖ/２ｎを実行すると、区間［０，１］の浮動小数点型の乱数になってしまうことがある。これは、整数型のビット数よりも小さな仮数部を有する浮動小数点型に変換するときに、最も近い値に丸めを行うことによるものである。  
このため、区間［０，１）における乱数の一様性に問題が生じ、区間［０，１）における一様な乱数を期待して作成されたアプリケーションでは支障が生じることとなる。
【０００９】
３）物理現象から取り出された乱数の品質改善における課題について
特許文献１に提案されている技術では、くくり合わせ法による補正においては、各ビットが０または１になる確率が正確に１/２となる一様な乱数列を別途生成しなければならないということがあった。
【００１０】
本発明は、上記事情に鑑みてなされたものであり、効率よく一様な乱数を生成することができる乱数生成装置および乱数生成方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決するために、本発明に係る乱数生成装置は、乱数を生成する乱数生成手段と、前記乱数生成手段により生成された乱数と、加算手段により生成された加算結果との加算を任意の回数繰り返す補正処理手段と、を備えることを特徴とする。
【００１２】
また、上述した課題を解決するために、本発明に係る乱数生成装置は、ノイズを発生するダイオードと、前記ダイオードに電流を供給する定電流源と、前記ダイオードの出力電圧を取り出すように接続され、前記ダイオードの動作インピーダンスと異なる値の抵抗値を持つ入力抵抗と、を有するノイズ源と、を備えることを特徴とする。
【００１３】
また、上述した課題を解決するために、本発明に係る乱数生成装置は、ノイズを発生するダイオードと、前記ダイオードに電流を供給する定電流源と、前記ダイオードの電流出力を観測する電流観測手段とを有し、前記ダイオードの出力電流の積分値を観測し、前記出力電流の積分値が一定の値に達するときに、クロック信号の値を乱数とする、ことを特徴とする。
【００１４】
また、上述した課題を解決するために、本発明に係る乱数生成装置は、浮動小数点型格納形式の仮数部に格納された「１」のうち最も上位の「１」の桁を把握し、前記「１」を仮数部の最上位ビットに来るようにシフト操作を行い、シフト操作した分だけ前記浮動小数点型格納形式の指数部でカウントダウンを行う変換手段と、を有する補正処理部と、を備えることを特徴とする。
【００１５】
また、上述した課題を解決するために、本発明に係る乱数生成方法は、乱数を生成する乱数生成ステップと、前記乱数生成手段により生成された乱数と、加算手段により生成された単純加算結果との加算を任意の回数繰り返すことによって複合加算結果を得る補正処理ステップと、を備えることを特徴とする。
【００１６】
また、上述した課題を解決するために、本発明に係る乱数生成方法は、ダイオードに一定の電流を供給するステップと、前記ダイオードに第１の微小変動する電流が発生するステップと、前記ダイオードの動作インピーダンスと異なる値の抵抗値を持つ入力抵抗に前記第１の微小変動する電流の影響による第２の微小変動する電流が流れるステップと、を備えることを特徴とする。
【００１７】
また、上述した課題を解決するために、本発明に係る乱数生成方法は、ダイオードに一定の電流を供給するステップと、前記ダイオードの電流出力を観測する電流観測ステップと、前記ダイオードの出力電流の積分値を観測し、前記出力電流の積分値が一定の値に達するときに、クロック信号の値を乱数とするステップと、を備えることを特徴とする。
【００１８】
また、上述した課題を解決するために、本発明に係る乱数生成方法は、乱数を生成する乱数生成ステップと、浮動小数点型格納形式の仮数部に格納された「１」のうち最も上位の「１」の桁を把握し、前記「１」を仮数部の最上位ビットに来るようにシフト操作を行い、シフト操作した分だけ前記浮動小数点型格納形式の指数部でカウントダウンを行う変換ステップと、乱数の一様性を補正処理する補正処理ステップと、を備えることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、効率よく一様な乱数を生成することができる。
【発明を実施するための最良の形態】
【００２０】
本発明に係る乱数生成装置および乱数生成方法の実施形態について、添付図面を参照して説明する。
【００２１】
［第１実施形態］
図１は、本発明に係る乱数生成装置の第１実施形態の全体的な構成例を示すブロック図である。
【００２２】
乱数生成装置１は、ノイズ源２と、Ａ/Ｄ変換器（アナログ/デジタル変換器）３と、補正処理部４により構成される。
【００２３】
ノイズ源２は、乱数の元となる物理現象の部分である。
【００２４】
Ａ/Ｄ変換器３は、アナログの物理現象を電気的に観測して計算機が認識できるディジタル情報に変換する機能を有する。
【００２５】
補正処理部４は、物理現象から取り出された乱数の品質を改善する機能を有する。こうして、乱数データ１０を得る。
【００２６】
図２は、本発明に係る乱数生成装置１の第１実施形態におけるノイズ源２の内部の機械的な構成例を示す説明図である。
【００２７】
ノイズ源２は、ツェナーダイオード２２に逆電流を供給する定電流源２１と、ツェナーダイオード２２の出力電圧を取り出すように接続された、コンデンサ２３と入力抵抗２４とフィードバック抵抗２５とが接続された反転アンプ２６により構成される。
【００２８】
ツェナーダイオード２２で発生したノイズは、コンデンサ２３で直流成分がカットされ、反転アンプ２６により増幅される。
【００２９】
従来においては電源から抵抗Ｒを用いてツェナーダイオードＤに電流を供給しているが（図１０（ａ）参照）、定電流源２１を用いることで、電圧降下によるツェナーダイオード２２のオフを回避し、より品質の高い物理乱数を実現することできる。
【００３０】
図３は、ツェナーダイオード２２の電流電圧特性を示す図である。横軸は逆電圧ＶＲ２０２、縦軸は逆電流ＩＲ２０１である。
【００３１】
逆電流ＩＲ２０１がリーク電流程度で非常に小さいとき、ツェナーダイオード２２の逆電圧ＶＲ２０２は逆電流ＩＲ２０１の増加とともに上昇し、ツェナー電圧ＶＺ２０３に到達するとツェナー降伏現象またはアバランシェ降伏現象によりツェナーダイオード２２の逆電圧ＶＲ２０２は逆電流ＩＲ２０１を変えてもほぼ一定の値を示す。
【００３２】
降伏現象が生じたときに流れるツェナー電流ＩＺ２０４にはゆらぎがあり、ツェナー電流の微小変動△ＩＺ２０５はツェナー電圧の微小変動△ＶＺ２０６をもたらす。動作インピーダンスＺｚ２０７は、ツェナー電流の微小変動△ＩＺ２０５とツェナー電圧の微小変動△ＶＺ２０６の関係から求める。
【００３３】
ツェナー電流ＩＺ２０４のゆらぎ、ツェナー電圧ＶＺ２０３のゆらぎを観測することにより、ツェナーダイオード２２のノイズを取り出すことができる。
【００３４】
ツェナー電流の微小変動△ＩＺ２０５を（＋／−）・Δｉとする。ここで（＋／−）は＋または−を意味し符号の順番は以降の式で意味がある。定電流源２１は常時一定の電流を供給しているから、ツェナー電流の微小変動△ＩＺ２０５により入力抵抗２４の値に関わらず、入力抵抗２４には（−／＋）・Δｉの電流が流れる。反転アンプ２６の出力電圧は、フィードバック抵抗２５をＲｆとすると、（＋／−）・Δｉ・Ｒｆとなる。
【００３５】
一方、ツェナー電流の微小変動△ＩＺ２０５によりツェナーダイオード２２のツェナー電圧２０３も（＋／−）・Δｉ・Ｚｚだけ変動する。ツェナー電圧の微小変動△ＶＺ２０６は入力抵抗２４により、反転アンプ２６への入力電流（＋／−）・Δｉ・Ｚｚ／Ｒｉとなる。反転アンプ２６の出力電圧は（−／＋）・Δｉ・（Ｚｚ／Ｒｉ）・Ｒｆとなる。ここで、Ｒｉは入力抵抗２４である。
【００３６】
以上のように、ツェナー電流の微小変動△ＩＺ２０５とツェナー電圧の微小変動ＶＺ２０６により、反転アンプ２６の出力電圧は、（（＋／−）・Δｉ・Ｒｆ）＋（（−／＋）・Δｉ・（Ｚｚ／Ｒｉ）・Ｒｆ）となる。整理すると、次の（式１）のようになる。  
［数１］
（＋／−）・Δｉ（１−Ｚｚ／Ｒｉ）Ｒｆ        （式１）
（式１）から、入力抵抗２４（Ｒｉ）＝動作インピーダンス２０７（Ｚｚ）とすることにより反転アンプ２６の出力に発生するノイズが低減する。また、入力抵抗２４（Ｒｉ）  ＞＞  動作インピーダンス２０７（Ｚｚ）とすることにより、ツェナー電圧の微小変動ＶＺ２０６によるノイズに比べてツェナー電流の微小変動△ＩＺ２０５が多く寄与するノイズが反転アンプ２６から出力される。
【００３７】
さらに、入力抵抗２４（Ｒｉ）  ＜＜  動作インピーダンス２０７（Ｚｚ）とすることにより、ツェナー電流の微小変動△ＩＺ２０５によるノイズに比べてツェナー電圧の微小変動ＶＺ２０６が多く寄与するノイズが反転アンプ２６から出力される。
【００３８】
これにより、抵抗値を適当な値に設定することにより、ノイズを減衰させる、電流ノイズ成分を出力する、電圧ノイズ成分を出力するなどの効果が得られる。
【００３９】
なお、図２において、直流成分をカットするためにコンデンサ２３を接続しているが、このような方法以外にも、ツェナーダイオード２２の下端側に直流電圧（バイアス電圧）を与える、反転アンプ２６の正側入力端子に直流電圧（バイアス電圧）を与える、反転アンプ２６の負側入力端子に直流電流（バイアス電流）を与える、などの方法がある。
【００４０】
また、ツェナーダイオードを用いて効果を説明したが、他の例えばトンネルダイオードやトンネル効果やアバランシェ降伏現象が生じる薄膜間に電圧をかけた場合においても、ゆらぎによりノイズが発生するため（式１）を用いて反転アンプ２６からノイズを出力することができる。
【００４１】
［第２実施形態］
本発明に係る乱数生成装置の第２実施形態の全体的な構成例は、第１実施形態の構成と同様であり（図１参照）、同一の構成には同一の符号を付して、重複した説明は省略する。
【００４２】
図４は、本発明に係る乱数生成装置１の第２実施形態におけるノイズ源２の内部の機械的な構成例を示す説明図である。
【００４３】
ノイズ源２は、定電流源３１と、ツェナーダイオード３２と、電流制御手段３３と、電圧観測手段３４と、電流観測手段３５と、により構成される。
【００４４】
電流制御手段３３から供給される電流制御信号３６により定電流源３１は、供給電流を変えることができる。定電流源３１によってツェナーダイオード３２に電流が供給され、出力電圧および出力電流が、それぞれ電圧観測手段３４および電流観測手段３５によって観測される。
【００４５】
ツェナーダイオード３２に供給する電流を小さくすることにより大きなノイズが得られる。しかし、電流を絞り過ぎてリーク電流程度になるとツェナーダイオード３２はオフとなりノイズが生じなくなる。このようなことから、ツェナーダイオード３２に供給する電流が小さい場合、大きなノイズを安定して得るには自動的に調整する機能が必要である。
【００４６】
具体的には、ゆらぎによりツェナーダイオード３２がオフとならないような値に、定電流源３１の電流値を固定する。一方、ノイズ信号をＡＤ（Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ）変換する場合、温度などの環境変化によりノイズの振幅が大きくなりすぎるとＡＤ変換器の変換範囲を超えてしまうことがある。このような場合には、ツェナーダイオード３２に供給する電流を増加させるとノイズ成分の振幅は小さくなる。
【００４７】
本実施形態により、大きなノイズ振幅が得られる電流をツェナーダイオードに供給しつつ、ツェナーダイオードがオフになることなく、また、ＡＤ変換器に過大なノイズ振幅が入力されることなくノイズ振幅を制御することができる。
【００４８】
なお、ツェナーダイオードを例に用いて説明したが、これに限らずその他のダイオードを用いても良い。
【００４９】
［第３実施形態］
本発明に係る乱数生成装置の第３実施形態の全体的な構成例は、第１実施形態の構成と同様であり（図１参照）、同一の構成には同一の符号を付して、重複した説明は省略する。
【００５０】
図５は、本発明に係る乱数生成装置１の第３実施形態におけるノイズ源２の内部の機械的な構成例を示す説明図である。
【００５１】
ノイズ源２の構成は、第２実施形態におけるノイズ源２の構成に加え、コンデンサ３７と、スイッチ３８とを備える。
【００５２】
コンデンサ３７は、ツェナーダイオード３２の電圧変化を観測する。蓄積した電荷を放電する手段としてスイッチ３８が接続されている。
【００５３】
図６は、本実施形態におけるノイズ源２の動作例を示す説明図である。
【００５４】
供給電流３０１はツェナー電圧ＶＺ２０３を生じさせる電流ｉを短時間の間Δｔにツェナーダイオード３２に供給する。これ以外の時刻では供給電流を０とするかバイアス電流を供給しておく。もし、ノイズがなければ電流観測手段３５には一定の電流ｉが流れるため出力電流積分値３０２はΔｔの間上昇し、Δｔを経過すると一定の値となる。
【００５５】
これに対し、ノイズがある場合、ノイズの影響により供給したすべての電荷が流れるまでの時間にばらつきが生じる。例えば、最も早く一定の値に達する積分値は、ノイズによる電流積分値３０３であり、最も遅く一定の値に達する積分値は、ノイズによる電流積分値３０４である。ツェナーダイオード３２にはｉ・Δｔの電荷が流れるが、そこで、クロック信号３０５を動かしておき、すべての電荷がツェナーダイオード３２の電極間を通過したとみなせる時刻にクロック信号３０５をサンプリングして０または１の乱数とする方法により２値乱数列を取得することができる。
【００５６】
なお、ゆらぎがクロック信号３０５に対して充分に大きい場合、クロック信号３０５と図示しないカウンタを用いて複数のビットを乱数列とすることも可能である。また、ゆらぎの測定からゆらぎの平均時刻を求め、平均より長い時間の場合に１、短い場合に０と割り当てることによっても２値乱数を得ることができる。
【００５７】
また、ツェナーダイオードを例に用いて説明したが、これに限らずその他のダイオードを用いても良い。
【００５８】
本実施形態により、ＡＤ変換器を用いることなく、ディジタル化された乱数を得ることができ、回路を小型化するのに有効である。
【００５９】
［第４実施形態］
図７は、本発明に係る乱数生成装置の第４実施形態の全体的な構成例を示す説明図である。
【００６０】
乱数生成装置１ａは、第１実施形態における乱数生成装置１の構成に加え、区間変換部５を備えている。その他の構成は、第１実施形態の構成と同様であり、同一の構成には同一の符号を付して、重複した説明は省略する。
【００６１】
区間変換部５は、Ａ/Ｄ変換器３により生成された区間［０，１）ではない整数型の乱数を区間［０，１）の浮動小数点型の乱数に変換する機能を有する。
【００６２】
図８は、区間変換部５の構成例を示す説明図である。
【００６３】
区間変換部５は、符号部４０２と指数部４０３と仮数部４０４で構成される浮動小数点型格納形式４０１と、符号設定手段４０５と、指数設定手段４０６と、仮数設定手段４０７と、変換手段４０８と、により構成される。
【００６４】
符号設定手段４０５、指数設定手段４０６および仮数設定手段４０７は、それぞれ浮動小数点型格納形式４０１の符号部４０２、指数部４０３および仮数部４０４に値を格納する。
【００６５】
次に、図９のフローチャートを参照して、図８の区間変換部５における区間変換処理について説明する。
【００６６】
区間変換処理スタートの前の状態は、例えば、符号部４０２には０が設定され、指数部４０３には最上位ビットに０が設定され他のビットには１が設定され、仮数部には任意の値が設定されている。勿論、これに限るものではない。
【００６７】
ステップ１では、仮数設定手段４０７は、例えば、３２ビットの整数型の乱数からそのうちの任意の２３ビットを仮数部４０４へ格納する。ここで、仮数部４０４の最上位ビットは常に１となっており、図示しない記憶部に格納されている。このため、浮動小数点型格納形式４０１は、区間［０，１）ではない。区間［０，１）とするためには、さらに、次の処理を要する。
【００６８】
ステップ２では、変換手段４０８は、仮数部４０４の最上位ビットを０として扱い、仮数部４０４に格納された１のうち最も上位の１の桁を把握する。
【００６９】
ステップ３では、変換手段４０８は、最も上位の１を仮数部４０４の最上位ビットに来るようにシフト操作を行う。
【００７０】
ステップ４では、変換手段４０８は、シフト操作した分だけ指数部４０３でカウントダウンを行う。
【００７１】
例えば、仮数部４０４が０１１の場合は、１回左シフトして指数部を１回カウントダウンする。仮数部４０４が０００の場合、指数部は表現可能な最小値に設定する。なお、ここでは説明のためにシフト操作と指数部４０３のカウントダウンを行うが、高速化のためにあらかじめシフト量を求め仮数部４０４および指数部４０３を設定する方法もある。
【００７２】
本実施形態により、浮動小数点型に変換する際に丸めを行うことがないので、区間［０，１）において一様な浮動小数点型の乱数を得ることができる。
【００７３】
なお、区間［０，１）の浮動小数点型の乱数に変換する方法について述べたが、他の区間へも指数部４０３を変更することにより可能である。
【００７４】
［第５実施形態］
本発明に係る乱数生成装置の第５実施形態の全体的な構成例は、第１実施形態の構成と同様であり（図１参照）、同一の構成には同一の符号を付して、重複した説明は省略する。
【００７５】
図１０（ａ）は、本発明に係る乱数生成装置１の第５実施形態における補正処理部４の内部の機能的な構成例を示す説明図である。
【００７６】
補正処理部４は、乱数生成部５０１と、加算部５０２とにより構成される。
【００７７】
乱数生成部５０１は、乱数を生成する回路で、物理現象を利用して生成した乱数の他、アルゴリズムに基づき生成される擬似乱数でもよい。
【００７８】
加算部５０２は、まず、乱数生成部５０１により生成された乱数と予め加算結果に格納された任意の値を加算する。次に、この加算結果と乱数生成部５０１により生成された乱数を加算する。これを任意の回数だけ繰り返し、乱数データ１０とする。
【００７９】
以下に、加算部５０２による一様化の作用について詳細に説明する。
【００８０】
図１１は、１ビット加算回路の論理値表である。
【００８１】
１ビット加算回路の入力は、下位からの桁上げＣｉと２つの入力ＩｎＡ、ＩｎＢである。出力は、加算結果Ｓｏと上位への桁上げＣｏから構成される。Ｃｉ、ＩｎＡ、ＩｎＢが０になる確率をそれぞれμ０、ρ０、φ０、１になる確率をそれぞれμ１、ρ１、φ１とすると、
［数２］
加算結果が０になる確率は
μ０・ρ０・φ０＋μ０・ρ１・φ１＋μ１・ρ０・φ１＋μ１・ρ１・φ０
（式２）
加算結果が１になる確率は
μ０・ρ０・φ１＋μ０・ρ１・φ０＋μ１・ρ０・φ０＋μ１・ρ１・φ１
となる。  
ここで入力ＩｎＢの０または１の発生確率が等しいなら、すなわち
φ０＝φ１＝０．５
であるなら、
加算結果が０になる確率は
（μ０・ρ０＋μ０・ρ１＋μ１・ρ０＋μ１・ρ１）×０．５
加算結果が１になる確率は
（μ０・ρ０＋μ０・ρ１＋μ１・ρ０＋μ１・ρ１）×０．５
となる。
【００８２】
すなわち、下位からの桁上げＣｉや入力ＩｎＡが０または１になる確率によらず、加算結果が０または１となる確率が等しくなる。説明のために１ビット加算回路について説明したが、１ビットよりも大きなビット数の加算回路についても各ビットの加算結果は０または１となる確率が等しくなる。
【００８３】
（式２）の各確率を期待値０．５からの差に直し加算結果の期待値０．５からの差ｅｒ０として整理すると（式３）を得る。  
すなわち、
［数３］
μ０＝０．５＋Δμ、μ１＝０．５−Δμ、ρ０＝０．５＋Δρ、ρ１＝０．５−Δρ、φ０＝０．５＋Δφ、φ１＝０．５−Δφ
とする。  
ｅｒ０＝４・Δμ・Δρ・Δφ      （式３）
（式３）より、Ｃｉ、ＩｎＡ、ＩｎＢのいずれかの確率が正確に０．５であれば、ｅｒ０が０になることが分かる。ただし、Ｃｉ、ＩｎＡの０または１は偶然に生じるものであり、補正のために調整が可能な値はＩｎＢだけであるから、（式２）から得られる「φ０＝φ１＝０．５であるなら、下位からの桁上げＣｉや入力ＩｎＡが０または１になる確率によらず、加算結果が０または１となる確率が等しくなる。」という結論に変わりはない。
【００８４】
（式３）を示した理由は、加算部５０２から出力される各ビットの一様性が加算を重ねることにより向上することを示すためである。加算前のＩｎＢの期待値０．５からの差はΔφ、加算結果の期待値０．５からの差ｅｒ０はΔφに４・Δμ・Δρを乗じた値である。４・Δμ・Δρが１よりも小さいならΔφの値によらずｅｒ０は加算する毎に０に近づく。ΔμおよびΔρは期待値０．５からの差（絶対値）は最大０．５である。最大値となる条件は、ＣｉまたはＩｎＡが固定値を示す場合であるが、ＩｎＡが乱数であるので、ＣｉおよびＩｎＡは固定ではないため、ΔμおよびΔρは期待値０．５からの差は区間（−０．５（−／＋）・０．５）にあり最大値を含まない。したがって、加算結果の期待値０．５からの差ｅｒ０は、最大Δφに±４・０．５・０．５を乗じた値であり区間（−Δφ（−／＋）・Δφ）である。すなわち、加算により０または１になる確率は期待値０．５に近づき、０．５に近づく速度（加算回数）は、Ｃｉ、ＩｎＡが０または１になる確率が期待値０．５との差によることが分かる。
【００８５】
したがって、加算部５０２により加算し続けることにより、乱数は一様となる。
【００８６】
また、図１０（ｂ）に示すように、加算部５０２の後段に排他論理和部５０３を設けることもできる。排他論理和部５０３は、加算結果と生成された乱数との排他論理和を求め、乱数を生成する。排他論理和による補正は、（式３）におけるΔμが±０．５に固定されたものと見なすことができ、一様性への収束は遅いが、生成された乱数の性質に近い乱数が得られる。
【００８７】
なお、加算回路の最下位ビットは下位からの桁上げがない。したがって、（式３）におけるΔμは０．５（絶対値）となり、最下位以外のビットと比べて一様性への収束条件が異なる。このため、加算結果の最下位ビット以外を補正後の乱数として用いるか、または、加算回路の最下位ビットの桁上げ入力に、生成された乱数５０４とは独立な数列を用いる、などの方法などを行う。
【００８８】
次に、本実施形態により、乱数として取り出すことができるビット数を増やし、さらなる高速化が可能となることを説明する。
【００８９】
図１２は、アナログのノイズ信号を１２-ビットのＡＤＣ(Analog to Digital Converter)を用いてディジタル信号に変換した後、各ビットとノイズ信号との相関係数をプロットした図である。
【００９０】
横軸がビットであり、Ｄ１１が最上位ビットである。縦軸が相関係数である。□は本実施形態による補正前、▲は本実施形態による補正後の相関係数である。相関係数は、±1に近いほど相関があり、0に近いほど相関がないことを示す。
【００９１】
ノイズ信号との相関が強いということは、環境条件や外来ノイズによりノイズ信号が変動すると、その影響を受けやすいということである。例えば、暗号装置においては外部からノイズを発生させ生成する乱数を制御される可能性があり暗号が役に立たなくなる。また、乱数を用いたシミュレーションにおいては偏りのある結果が生じるという問題がある。そのため、ノイズ信号と相関が小さいビットのみを使用することが望ましい。
【００９２】
図１２では、補正前□は上位３ビットＤ１１，Ｄ１０，Ｄ９がノイズ信号との相関が強い。これに対し、補正後▲はすべてのビットがノイズ信号との相関が小さくなり、環境や外部ノイズの影響を受け難い乱数が生成できる可能性がある。
【００９３】
すなわち、補正を行わない場合、上位３ビットを除く９ビットが乱数データ１０として取り出せるビット数であったが、補正により１２ビットが乱数データ１０として取り出すことができる。
【００９４】
以上より、本実施形態により、一様な乱数列を別途生成することなく、生成した乱数そのものを加算することにより一様な乱数列を生成することができ、各ビットが０または１となる確率を０．５に収束させる補正が可能である。
【００９５】
また、乱数として取り出すことができるビット数を増やし、さらなる高速化が可能となる。
【００９６】
本発明の実施形態において説明した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。
【００９７】
さらに、本発明の実施形態では、フローチャートのステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【００９８】
また、本発明は上記の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【図面の簡単な説明】
【００９９】
【図１】本発明に係る乱数生成装置の第１実施形態の全体的な構成例を示すブロック図。
【図２】第１実施形態におけるノイズ源２の内部の機械的な構成例を示す説明図。
【図３】ツェナーダイオード２２の電流電圧特性を示す図。
【図４】本発明に係る乱数生成装置の第２実施形態におけるノイズ源２の内部の機械的な構成例を示す説明図。
【図５】本発明に係る乱数生成装置の第３実施形態におけるノイズ源２の内部の機械的な構成例を示す説明図。
【図６】第３実施形態におけるノイズ源２の動作例を示す説明図。
【図７】本発明に係る乱数生成装置の第４実施形態の全体的な構成例を示す説明図。
【図８】第４実施形態における区間変換部５の構成例を示す説明図。
【図９】１ビット加算回路の論理値と確率を示す表。
【図１０（ａ）】本発明に係る乱数生成装置の第５実施形態における補正処理部４の内部の機能的な構成例を示す説明図。
【図１０（ｂ）】第５実施形態における補正処理部４の内部の機能的な構成例を示す説明図。
【図１１】１ビット加算回路の論理値表。
【図１２】アナログのノイズ信号を１２-ビットのＡＤＣ(Analog to Digital Converter)を用いてディジタル信号に変換した後、各ビットとノイズ信号との相関係数をプロットした図。
【図１３（ａ）】従来のツェナーダイオードの使い方を示す図。
【図１３（ｂ）】従来のツェナーダイオードの使い方におけるツェナーダイオードＤの出力電圧の時間特性を示す図。
【符号の説明】
【０１００】
１  乱数生成装置
１ａ  乱数生成装置
２  ノイズ源
３  Ａ/Ｄ変換器
４  補正処理部
５  区間変換部
１０  乱数データ
２１  定電流源
２２  ツェナーダイオード
２３  コンデンサ
２４  入力抵抗
２５  フィードバック抵抗
２６  反転アンプ
３１  定電流源
３２  ツェナーダイオード
３３  電流制御手段
３４  電圧観測手段
３５  電流観測手段
３６  電流制御信号
３７  コンデンサ
３８  スイッチ
２０１  逆電流ＩＲ
２０２  逆電圧ＶＲ
２０３  ツェナー電圧ＶＺ
２０４  ツェナー電流ＩＺ
２０５  ツェナー電流の微小変動△ＩＺ
２０６  ツェナー電圧の微小変動△ＶＺ
２０７  動作インピーダンスＺｚ
３０１  供給電流
３０２  出力電流積分値
３０３  ノイズによる電流積分値
３０４  ノイズによる電流積分値
３０５  クロック信号
４０１  浮動小数点型格納形式
４０２  符号部
４０３  指数部
４０４  仮数部
４０５  符号設定手段
４０６  指数設定手段
４０７  仮数設定手段
４０８  変換手段
【図１】
2008269314.tif 000003
【図２】
2008269314.tif 000004
【図３】
2008269314.tif 000005
【図４】
2008269314.tif 000006
【図５】
2008269314.tif 000007
【図６】
2008269314.tif 000008
【図７】
2008269314.tif 000009
【図８】
2008269314.tif 000010
【図９】
2008269314.tif 000011
【図１０（ａ）】
2008269314.tif 000012
【図１０（ｂ）】
2008269314.tif 000013
【図１１】
2008269314.tif 000014
【図１２】
2008269314.tif 000015
【図１３（ａ）】
2008269314.tif 000016
【図１３（ｂ）】
2008269314.tif 000017