読み込み中...数学的に述べれば、今得られている数列 x1, x2, ..., xn から次の数列の値 xn+1 が予測できない数列。乱数列の各要素を乱数という。
乱数は、実験計画やシミュレーションで利用されるほか、秘密鍵の生成など暗号でも利用される。
乱数はそのとる値や分布によって分類される。
2進乱数とは0と1 (あるいは-1と1)がランダムに現れるような乱数である。ストリーム暗号やスペクトラム拡散通信に用いられる。コンピュータでは、複数ビットの乱数を生成するような関数から1ビット単位で切り出して生成する。
自然乱数とは自然数がランダムに現れるような乱数である。0を含むことが多い。0以上無限大までの全ての自然数を用いた自然乱数が考えられるが、実際上は最大の自然数を決めて、それ以下の範囲で考えることが多い。
コンピュータでは最大値を持つ自然乱数を発生させる関数(rand()やメルセンヌ・ツイスタなど)が用意されている。これを加工することで色々な乱数を作り出すことができる。
一様乱数とはある有限の区間を区切って、その区間内で全ての実数が同じ確率(濃度)で現れるような乱数のことである。
コンピュータでは最大値を持つ自然乱数列を発生させて、それを最大値で割ることで[0,1](0以上1以下)の一様乱数が得られる。また、(最大値+1)で割ることで[0,1)(0以上1未満)の一様乱数が得られる。このようにして生成した一様乱数は原理的に有理数のみで無理数は含まれないため、これは真の一様乱数ではない。デジタルコンピュータの性質上、無理数を扱うことはできない。
[a,b](a以上b以下)の区間の一様乱数が必要な場合は、[0,1]の乱数列を用意して、これに(b-a)をかけて、さらにaを加えることで得られる。
[a,b)(a以上b未満)が必要な場合は同様にして[0,1)を利用する。
正規乱数とは正規分布を持つような乱数である。正規乱数は工学においてはホワイトノイズとして利用される。
平均μ、分散σ2 の正規分布N(μ, σ2)のような正規乱数を作る場合、まず(0,1]の一様乱数をボックス=ミューラー法(Box-Muller transform)で変換してN(0, 1)の正規乱数を得ることから始める。
一様乱数(0,1]の要素とを次の変換を用いて変換する。このようにして二つの相関のないN(0, 1)の正規乱数が得られる。ただしは自然対数。
この正規乱数にσをかけて、さらにμを加えることで正規分布N(μ, σ2)の正規乱数が得られる。
またこれとは別に、簡単で擬似的な方法として、12個の一様乱数[0,1]の和から6を減ずる方法もよく用いられる(中心極限定理を参照)。近年のパーソナルコンピュータはプロセッサの進歩によって三角関数や対数関数の演算が早くなっているため、1つの正規乱数あたり12回もの一様乱数生成を要するこの方法より、1つの正規乱数あたり1回の一様乱数生成で済むボックス=ミューラー法を用いた方がずっと高速である。
コンピュータは有限オートマトンとみなせるので、外部からの入力がない限り計算によって求める確定的な擬似乱数しか生成できない。外部のエントロピを入力するための専用ハードウェアで生成した非確定的な乱数を利用することになる。そのようなハードウェア乱数生成器を内蔵したCPUやチップセットも存在する。コンピュータがなかった当時は「乱数賽」(1〜0の全ての数字が1/10の確率で表われるよう作られたサイコロ)や袋に入れた乱数カードを引き出すハイハット方式で生成していた。
読み込み中...