(57)【要約】      （修正有）【課題】計算量を削減し、一様乱数における乱数の均等分布性、正規乱数における乱数分布への当てはまり方の改善を図ることができる乱数生成装置、乱数生成方法、乱数生成プログラム、及びシミュレーション装置を提供する。【解決手段】原始乱数取得部がＮ（Ｎは２以上の自然数）の一例として２個の原始乱数（ｘ１，ｙ１）を取得した場合、当該２個の原始乱数において、少なくとも一つについて、符号の反転処理を行い、最終的に２個の原始乱数の両方について符号の反転処理が成されるまで乱数を生成して（原始乱数が２個の場合、６個の乱数が生成される。）、生成された乱数の少なくとも一部を乱数として出力する。【選択図】図２
2010237961.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個（Ｎは２以上の自然数）の原始乱数を取得する原始乱数取得部と、
前記Ｎ個の原始乱数から、符号の反転処理により、乱数を生成する乱数生成部と、
前記乱数生成部が生成した乱数の少なくとも一部を、乱数として出力する乱数出力部とを備え、
前記乱数生成部は、
前記Ｎ個の原始乱数を（ｘ１，ｘ２，・・ｘＮ）と表した場合に、前記Ｎ個の原始乱数の少なくとも一つの符号の反転処理を行ってＮ個の乱数を生成するとともに、Ｎ個の原始乱数のうち、符号の反転処理を行う原始乱数の個数を変化させて、最終的にＮ個全部の原始乱数の符号の反転処理が成されるまで、乱数を生成する
ことを特徴とする乱数生成装置。
【請求項２】
前記乱数生成部は、
前記Ｎ個の原始乱数から、（Ｎ＊２Ｎ−Ｎ）個の乱数を生成する
ことを特徴とする請求項１に記載の乱数生成装置。
【請求項３】
前記乱数生成部は、
前記原始乱数取得部が、０からａ（ａは正の実数）までの範囲内で生成されたＮ個の原始乱数を取得し、０からａまでの範囲内で乱数を生成する場合に、ｎ番目の原始乱数ｘｎに対する符号の反転処理として（ａ−ｘｎ）を算出する
ことを特徴とする請求項１又は２に記載の乱数生成装置。
【請求項４】
前記原始乱数取得部が、ａからｂまでの範囲内で生成されたＮ個の原始乱数を取得し、前記乱数生成部がａからｂまでの範囲内で乱数を生成する場合に、（ａ＋ｂ）／２を原点とした符号の反転処理を行う
ことを特徴とする請求項１又は２に記載の乱数生成装置。
【請求項５】
前記原始乱数取得部が、正規乱数を取得した場合には、前記乱数生成部は、予め設定された目標値を原点とした符号の反転処理を行う
ことを特徴とする請求項１又は２に記載の乱数生成装置。
【請求項６】
前記乱数出力部は、
前記原始乱数取得した原始乱数の少なくとも一部を乱数として出力する
ことを特徴とする請求項１から５のいずれかに記載の乱数生成装置。
【請求項７】
前記原始乱数取得部は、２個ずつの原始乱数を取得し、
前記乱数生成部は、取得した２個の原始乱数から６個の乱数を生成する
ことを特徴とする請求項１から６のいずれかに記載の乱数生成装置。
【請求項８】
前記原始乱数取得部は、３個ずつの原始乱数を取得し、
前記乱数生成部は、取得した３個の原始乱数から２１個の乱数を生成する
ことを特徴とする請求項１から６のいずれかに記載の乱数生成装置。
【請求項９】
前記乱数生成装置は、
前記Ｎの値の指定入力を受け付ける次元数指定入力受付部を備える
ことを特徴とする請求項１から６のいずれかに記載の乱数生成装置。
【請求項１０】
前記乱数出力部は、
前記乱数生成部が生成した乱数から、同一の値を間引いて乱数として出力する
ことを特徴とする請求項１から９のいずれかに記載の乱数生成装置。
【請求項１１】
Ｎ個（Ｎは２以上の自然数）の原始乱数を取得する原始乱数取得ステップと、
前記Ｎ個の原始乱数から、符号の反転処理により、乱数を生成する乱数生成ステップとを含み、
前記乱数生成ステップでは、
前記Ｎ個の原始乱数を（ｘ１，ｘ２，・・ｘＮ）と表した場合に、前記Ｎ個の原始乱数の少なくとも一つの符号の反転処理を行ってＮ個の乱数を生成するとともに、Ｎ個の原始乱数のうち、符号の反転処理を行う原始乱数の個数を変化させて、最終的にＮ個全部の原始乱数の符号の反転処理が成されるまで、乱数を生成する
ことを特徴とする乱数生成方法。
【請求項１２】
前記乱数生成ステップにおいて、
前記Ｎ個の原始乱数から、（Ｎ＊２Ｎ−Ｎ）個の乱数を生成する
ことを特徴とする請求項１０に記載の乱数生成方法。
【請求項１３】
前記乱数生成ステップにおいて、
前記原始乱数取得部ステップにおいて０からａ（ａは正の実数）までの範囲内で生成されたＮ個の原始乱数を取得し、０からａまでの範囲内で乱数を生成する場合に、ｎ番目の原始乱数ｘｎに対する符号の反転処理として（ａ−ｘｎ）を算出する
ことを特徴とする請求項１１又は１２に記載の乱数生成方法。
【請求項１４】
Ｎ（Ｎは２以上の自然数）個の原始乱数を取得する原始乱数取得処理と、
前記Ｎ個の原始乱数から、符号の反転処理により、乱数を生成する乱数生成処理とをコンピュータに実行させ、
前記乱数生成処理では、
前記Ｎ個の原始乱数を（ｘ１，ｘ２，・・ｘＮ）と表した場合に、前記Ｎ個の原始乱数の少なくとも一つの符号の反転処理を行ってＮ個の乱数を生成するとともに、Ｎ個の原始乱数のうち、符号の反転処理を行う原始乱数の個数を変化させて、最終的にＮ個全部の原始乱数の符号の反転処理が成されるまで、乱数を生成する処理をコンピュータに実行させる
ことを特徴とする乱数生成プログラム。
【請求項１５】
前記乱数生成処理において、
前記Ｎ個の原始乱数から、（Ｎ＊２Ｎ−Ｎ）個の乱数を生成する
ことを特徴とする請求項１４に記載の乱数生成プログラム。
【請求項１６】
前記乱数生成処理において、
前記原始乱数取得処理において０からａ（ａは正の実数）までの範囲内で生成されたＮ個の原始乱数を取得し、０からａまでの範囲内で乱数を生成する場合に、ｎ番目の原始乱数ｘｎに対する符号の反転処理として（ａ−ｘｎ）を算出する
ことを特徴とする請求項１４又は１５に記載の乱数生成プログラム。
【請求項１７】
請求項１４から１６のいずれかに記載の乱数生成プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１８】
Ｎ（Ｎは２以上の自然数）個の原始乱数から、符号の反転処理により、乱数を生成する乱数生成部を含む電子回路部品であって、
前記乱数生成部は、
前記Ｎ個の原始乱数を（ｘ１，ｘ２，・・ｘＮ）と表した場合に、前記Ｎ個の原始乱数の少なくとも一つの符号の反転処理を行ってＮ個の乱数を生成するとともに、Ｎ個の原始乱数のうち、符号の反転処理を行う原始乱数の個数を変化させて、最終的にＮ個全部の原始乱数の符号の反転処理が成されるまで、乱数を生成する
ことを特徴とする電子回路部品。
【請求項１９】
請求項８に記載の乱数生成装置により生成された乱数を用いてシミュレーションを行うシミュレーション装置において、
シミュレーション計算対象が３次元多重積分計算である
ことを特徴とするシミュレーション装置。
【請求項２０】
請求項１から６のいずれかに記載の乱数生成装置により生成された乱数を用いてシミュレーションを行うシミュレーション装置において、
Ｎ次元多重積分若しくは変数Ｎ個にモデリングされた数式のシミュレーション計算を行う場合に、Ｎ個の原始乱数を取得して前記乱数生成部により生成された乱数を用いることを特徴とするシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数生成装置、乱数生成方法、乱数生成プログラム、及びシミュレーション装置に関し、特に、一様乱数、正規乱数など、分布に対称性を有することが好ましい乱数の生成に適した乱数生成装置、乱数生成方法、乱数生成プログラム、及び生成された乱数を利用したシミュレーション装置に関する。
【背景技術】
【０００２】
モンテカルロ法は、乱数を用いたシミュレーション技術であり、種々の分野で検討が加えられている。一様乱数、正規乱数の生成についても古くから多くの研究がなされており、一様擬似乱数の生成方法として、特にメルセンヌ・ツイスタ（以下「ＭＴ」と略記する。）法は著名である。一方、正規乱数の生成方法としては、例えば非特許文献１に、渋谷氏による方法が紹介されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】津田孝夫、「モンテカルロ法とシミュレーション」、改訂版、株式会社培風館、昭和５２年１１月１５日、ｐｐ．６０−６１
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の乱数生成法は一般に計算量が多く、コンピュータ上で複雑なシミュレーションを行うには、少しでも計算量を減らすことが、高速度化に繋がる。また、一様乱数や正規乱数の場合、乱数の均等分布性、分布への当てはまり方の改善は、モンテカルロ法シミュレーションの高速、高精度化に繋がる。
【０００５】
本発明は上記の諸点に鑑みてなされたものであって、特に、一様乱数、正規乱数など、分布に対称性を有することが好ましい乱数の生成に適した乱数生成装置、乱数生成方法、乱数生成プログラム、及び生成された乱数を利用したシミュレーション装置を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記の問題点を解決するために、本発明に係る乱数生成装置は、Ｎ個（Ｎは２以上の自然数）の原始乱数を取得する原始乱数取得部と、前記Ｎ個の原始乱数から、符号の反転処理により、乱数を生成する乱数生成部と、前記乱数生成部が生成した乱数の少なくとも一部を、乱数として出力する乱数出力部とを備え、前記乱数生成部は、前記Ｎ個の原始乱数を（ｘ１，ｘ２，・・ｘＮ）と表した場合に、前記Ｎ個の原始乱数の少なくとも一つの符号の反転処理を行ってＮ個の乱数を生成するとともに、Ｎ個の原始乱数のうち、符号の反転処理を行う原始乱数の個数を変化させて、最終的にＮ個全部の原始乱数の符号の反転処理が成されるまで、乱数を生成することを特徴としている。
【０００７】
本発明に係る乱数生成装置では、乱数生成部が、得られたＮ個の原始乱数について順次「符号の反転処理」を行い、新たな乱数を生成する。この処理により、乱数発生に要する計算量、シミュレーションに要する計算量の削減を図りつつ、シミュレーションの精度の維持、向上をも図ることが可能となる。
【０００８】
「符号の反転処理」については、下記に詳細に説明するが、例えばＮ＝２の場合には、原始乱数として、ｘ１、ｙ１の２個の乱数が取得された場合であって、原点座標が（０，０）の場合、ｘ１を−ｘ１に、ｙ１を−ｙ１に変換する処理が含まれる。原点座標が（０．５，０．５）の場合であって、ｘ１、ｙ１の２個の乱数がそれぞれ０から１の範囲内で生成されるような場合であれば、ｘ１を１−ｘ１に、ｙ１を１−ｙ１に変換する処理も「符号の反転処理」の一例である。Ｎ＝３の場合であれば、原始乱数として、ｘ１、ｙ１、ｚ１の３個の乱数が取得されるが、３個の乱数のそれぞれについて順次「符号の反転処理」を行うことで、３次元座標上における７個の新たな点（２１個の乱数）が生成されることになる。即ち、前記乱数生成部は、前記Ｎ個の原始乱数から、（Ｎ＊２Ｎ−Ｎ）個の乱数を生成する構成とすることができる。
【０００９】
前記乱数生成部は、前記原始乱数取得部が、０からａ（ａは正の実数）までの範囲内で生成されたＮ個の原始乱数を取得し、０からａまでの範囲内で乱数を生成する場合に、ｎ番目の原始乱数ｘｎに対する符号の反転処理として（ａ−ｘｎ）を算出する構成とすることができる。なお、前記乱数出力部は、前記原始乱数取得した原始乱数の少なくとも一部を乱数として出力する構成とすることができる。
【００１０】
このような「符号の反転処理」による乱数の生成は、例えば３次元多重積分の場合や３変数モデルのシミュレーションを行うような場合にはＮ＝３として乱数を生成することが好適である。３本の座標軸の全てについて、均等分布性、多次元確率分布への当てはまりを改善することができるからである。４次元多重積分の計算を行う場合などにはＮ＝４とすることが好適となる。
【００１１】
本発明に係る乱数生成手法の適用範囲は、多重積分に限定されず、種々のモンテカルロ法シミュレーションに用いることができる。特に、一様乱数、正規乱数など、分布に対称性を有する乱数が好適に用いられるような計算に適している。本発明に係る乱数生成プログラムは、本発明に係る乱数生成をコンピュータに実行させることを特徴とするコンピュータ・プログラムである。本発明に係る記録媒体は、本発明に係るコンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体であって、記録媒体には、例えばＲＯＭ、ＣＤ−ＲＯＭ、ＤＶＤ等の各種記録媒体が含まれる。本発明に係る乱数生成は、電子回路を用いてハードウェア的に実現することもできる。
【発明の効果】
【００１２】
本発明に係る乱数生成装置等によると、計算量を低減しつつ、乱数分布の適切化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態における乱数生成装置の全体構成について説明するためのブロック図である。
【図２】本発明の第１の実施の形態における乱数生成部１０２の処理内容について説明するための図である。
【図３】第１の実施の形態において、原点を（０．５，０．５）とした場合について説明するための図である。
【図４】第２の実施の形態における乱数生成部１０２の処理内容について説明するための図である。
【図５】第２の実施の形態における乱数生成の具体的な考え方について説明するための図である。
【図６】Ｎ＝４とした場合、４個の原始乱数から６０個の新たな乱数が生成される様子について説明するための図である。
【図７】生成した乱数を用いた多重積分計算の結果を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図面を参照しながら説明する。図１は、本実施の形態の乱数生成装置の概略構成について説明するためのブロック図である。本実施の形態の乱数生成装置１００は、原始乱数取得部１０１、乱数生成部１０２、乱数出力部１０３を備えている。
【００１５】
原始乱数取得部１０１は、本実施の形態の乱数生成装置における乱数生成の基礎となる原始乱数を取得する。原始乱数は、一様乱数の場合、例えば上記ＭＴ法により生成された乱数でも良いし、他の方法により生成された擬似乱数、自然乱数であっても良い。正規乱数の場合では、渋谷氏による正規乱数であっても良い。
【００１６】
乱数生成部１０２は、原始乱数取得部１０１が取得したＮ個の乱数から、符号の反転処理により、Ｎ個を超える乱数を生成する。乱数生成部１０２の処理については、後で詳細に説明する。
【００１７】
乱数出力部１０３は、乱数生成部１０２にて生成された乱数を出力する。乱数出力部１０３が出力する乱数には、原始乱数取得部１０１が取得した原始乱数を含む構成とすることができる。乱数出力部１０３が出力した乱数が、順次、例えばモンテカルロ法シミュレーションに用いられる。
【００１８】
（実施の形態１）
本発明の第１の実施の形態として、原始乱数取得部１０１が順次２個ずつの乱数を取得する場合（Ｎ＝２）について説明する。図２は、本実施の形態の乱数生成部１０２の処理内容について説明するための図である。
【００１９】
同図の例において、原始乱数取得部１０１が２個の原始乱数（ｘ１，ｙ１）を取得したとする。乱数生成部１０２は、当該２個の乱数から、符号の反転処理により、６個の新たな乱数を生成する。即ち、ｘ―ｙ座標の原点を（０，０）とした場合、（ｘ１，―ｙ１）（―ｘ１，ｙ１）（―ｘ１，―ｙ１）の６個の新たな乱数が生成される。
【００２０】
乱数出力部１０３は、乱数生成部１０２で新たに生成された６個の乱数に原始乱数２個を加えて、合計８個の乱数を出力する。その後、原始乱数取得部１０１は、さらに２個の原始乱数を取得し、上記と同様に６個の新たな乱数を生成し、乱数出力部１０３が８個の乱数を出力する。この処理を繰り返すことにより、多量の乱数を順次生成することができる。本実施の形態の乱数生成部１０２の処理のような符号の反転処理は、原始乱数の生成処理と比較して、少ない計算量で済むため、必要な乱数の数が増加するほど、計算量減少効果は大きくなる。
【００２１】
なお、原始乱数生成部１０１が、０から１の間で生成される原始乱数を取得し、乱数出力部１０３が、やはり０から１の間の乱数を出力する構成とする場合には、図２における原点を（０．５，０．５）とすればよい（０．５＝１／２）。図３は、原点を（０．５，０．５）とした場合について説明するための図である。この場合、原始乱数取得部１０１が取得した原始乱数が、第１象限から第４象限の中のどこに位置するかは不定であるが、いずれの象限に入った場合でも、６個の新たな乱数を容易に生成することができることは明らかである。原点が（０，０）以外の場合であっても、原始乱数が０からａまで（ａは正の実数）の範囲であって、乱数生成部１０２が０からａまでの範囲内の乱数を出力する場合、原点の値をａ／２として、ｎ番目の原始乱数の値ｘｎを（ａ−ｘｎ）の値に変換すれば良い。ｘｎを（ａ―ｘｎ）に変換することも「符号の反転処理」に含める。この「符号の反転処理」の定義については、原始乱数の数Ｎが増加しても同様に考えることができる。なお、区間（ａ，ｂ）の一様乱数ηは、０から１までの範囲で生成される一様乱数ξを使って、η＝（ｂ−ａ）×ξ＋ａのように変換することができる。また、（ａ＋ｂ）／２を原点として「符号の反転処理」を行っても良い。即ち、区間（ａ，ｂ）の一様乱数であっても「符号の反転処理」は可能である。正規乱数の場合でも、原点が対称点となるように変換しておけば、容易に「符号の反転処理」は実現することができる。なお、一般に正規乱数の場合、実際に必要とされる正規乱数の分布のピークの位置は０ではないことも多いが、経験的に（あるいは実測にて）得られた目標値としてのピークの値を原点と考えて「符号の反転処理」を行うようにすることもできる。
【００２２】
このような乱数生成方法と用いた場合の利点は、一様乱数における均等分布性の改善、正規乱数においては、乱数分布への当てはまり方（多次元確率分布への当てはまり方）の改善を図ることができる点である。即ち、多重積分などの領域積分型モンテカルロ法、事象再現型モンテカルロ法のいずれにも適用可能な、シミュレーションに用いる乱数としての質を保ちつつ、大幅に計算量を削減することが可能となる。
【００２３】
（実施の形態２）
第１の実施の形態では、原始乱数取得部１０１が２個ずつの原始乱数を取得する場合について説明した。第２の実施の形態では、原始乱数取得部１０１が３個ずつの原始乱数を取得する場合（Ｎ＝３）について説明する。
【００２４】
図４は、本実施の形態における乱数生成部１０２の処理内容について説明するための図である。本実施の形態では、原始乱数取得部１０１が（ｘ１，ｙ１，ｚ１）という３個の原始乱数を取得する。
【００２５】
乱数生成部１０２は、前記３個の原始乱数から、２１個の乱数を生成する。２１個とは、３＊２３−３に相当する。この個数は、取得した原始乱数の個数Ｎに、２のＮ乗を乗算し、原始乱数の個数Ｎを減算した値である。図５は、本実施の形態における乱数生成の具体的な考え方について説明するための図である。
【００２６】
原始乱数が３個であるから、まず、いずれか１個（例えばｚ１）について符号の反転処理を行う。次に、例えばｙ１について符号の反転処理を行い、ｚ１、−ｚ１として処理を行う。さらに、ｘ１についても符号の反転処理を行い、順次符号の反転処理が実行される原始乱数を増加させる。
【００２７】
最終的に、３個の原始乱数全てについて符号の反転処理がなされ、乱数（―ｘ１，―ｙ１，―ｚ１）を得る。以上のような処理の結果、原始乱数を除き、全部で２１（＝７＊３）個の乱数が生成される。原始乱数取得部１０１が取得する原始乱数の個数Ｎを増加させていくに従い、多数の乱数を発生させるために必要な計算量は、通常の乱数生成と比較して減少していくという効果が奏せられる。原始乱数が０から１の間で生成され、０から１の間で乱数を生成する場合、即ち原点を（０．５，０．５，０．５）とした場合等の乱数生成方法（符号の反転処理の考え方）は、第１の実施の形態と同様である。
【００２８】
上記第１及び第２の実施の形態では、原始乱数取得部１０１が２個、又は３個の原始乱数を取得し、乱数生成部１０２が、２＊２２−２（＝６）個、又は３＊２３−３（２１個）の乱数を生成する場合について説明した。しかしながら、原始乱数取得部１０１が取得する原始乱数の個数は、２個、３個に限定されるわけでは勿論なく、４個以上として、乱数生成部１０２における乱数生成の次元数を大きくすることもでき、理論上はＮの値を増加させるほど、計算量は（１／２Ｎ）と大幅に減少する。もっとも処理時間は具体的なプログラミングの手法によっても異なる。
【００２９】
例えば、Ｎ＝４とした場合、図６に示されるように、４個の原始乱数から６０個の新たな乱数が生成される。もっとも、Ｎの数値を大きくすればするほど、乱数として、絶対値同一の値が出力される割合は増加することになる。これは、いわゆる準モンテカルロ法に用いるような場合には大きな問題とはならない可能性もあるし、下記に説明するような４次元多重積分、あるいは４変数モデルのシミュレーションにおいては、むしろ好適である。他の用途に用いるのであれば、乱数生成部１０２が生成した乱数の中から、絶対値同一の値を間引いて出力するような実施形態も可能である。
【００３０】
図７は、本実施の形態の乱数生成を適用した多重積分の数値計算例を示す図である。同図中において、「通常乱数」とは、富士通Fortran＆C Academic Package V4.0に添付されている乱数生成プログラムを用いたものを言い、ＭＴ乱数とは、上記メルセンヌ・ツイスタ乱数である。計算例１は、３次元多重積分に上記実施の形態（Ｎ＝３）を適用した場合の結果を示すものであり、計算例２は、４次元多重積分に上記実施の形態（Ｎ＝４）を適用した場合の結果を示すものである。計算例１では、大きな精度向上効果が見られる。また、計算例２では、精度向上効果に加え、計算時間の短縮効果も大きいことがわかる。上記Ｎで表される次元数が大きくなるほど、本願発明の計算量削減効果が大きくなることが示された。
【産業上の利用可能性】
【００３１】
本発明は、例えば、モンテカルロ法に用いる乱数生成に適用することができる。
【符号の説明】
【００３２】
１０１          原始乱数取得部
１０２          乱数生成部
１０３          乱数出力部
【図１】
2010237961.tif 000003
【図２】
2010237961.tif 000004
【図３】
2010237961.tif 000005
【図４】
2010237961.tif 000006
【図５】
2010237961.tif 000007
【図６】
2010237961.tif 000008
【図７】
2010237961.tif 000009