next up previous
Next: 疑似乱数の作成法 Up: 乱数について Previous: 乱数について

シミュレーションと乱数

シミュレーションプログラムの実行には、乱数が必要である。 その乱数の質がシミュレーションの結果に影響する。 シミュレーションに用いる乱数は、次のような性質をもつことが必要である。

最も重要な性質は、統計的性質がよいことである。 残念ながら現在のところ欠点のない乱数発生法はない。 しかし、性質のわかっている乱数発生法のアルゴリズムはどんどん増えている。 このため、シミュレーションで特に悪い乱数列を使ってしまう危険は少なくなっている。

現在、シミュレーションのプログラムは非常に多くの乱数を必要とするので、計算効率は非常に重要である。 tex2html_wrap_inline272 個もの乱数を使うこともしばしばあるので、1つの乱数を計算する作業は、非常に高速で行われなければならない。 また、それに必要なコンピュータの記憶容量も重要な条件となる。 乱数発生ルーチンは、高速かつ小さなメモリー量で行えるものでなければならない。

コンピュータ上で発生できる乱数は、実際には真の乱数ではなく疑似乱数である。 ほとんどすべての乱数発生ルーチンでは、再帰的関係式により疑似乱数を生成する。 したがって、その数列はあるステップ数の後に、同じものがくり返される。 その周期は少なくとも必要となる乱数の数に比べて、十分に大きくなければならない。 使用する乱数の数よりも短い周期の乱数発生アルゴリズムを使用すると、不合理な結果を生んでしまう。

今日もっともよく用いられる乱数発生法は、線形合同法とよばれる方法である。 それはある整数値を種として、決定論的手法によってランダムな整数列を生成する。 ``乱数''と``決定論的手法''とは、一見矛盾しているが、アルゴリズムがテストされるためには決定論的手法によっている必要がある。 実行のたびに違った乱数列を生成するようなものだと、アルゴリズムを変えたときの相違点を知ることができない。

線形合同法による整数列は、計算効率がよいため好んで用いられる。 とりわけ、正規化をおこなって、区間[0,1]での乱数として用いる場合が多い。 生成された数をその内で最も大きな数で割れば単位区間[0,1]に規格化して使うことができる。



2000年09月07日 (木) 20時25分23秒 JST