乱数列とはランダムな数列のこと。 数学的に述べれば、今得られている数列 x1, x2, ..., xn から次の数列の値 xn+1 が予測できない数列。乱数列の各要素を乱数という。
コンピュータでは、計算によって求める確定的な擬似乱数を利用するか、専用ハードウェアで生成した非確定的な乱数を利用することになる。そのようなハードウェア乱数生成器を内蔵したCPUも存在する。コンピュータがなかった当時は「乱数賽」(1~0の全ての数字が1/10の確率で表われるよう作られたサイコロ)で生成していた。
コンピュータでは最大値を持つ自然乱数を発生させる関数(rand()やメルセンヌ・ツイスタなど)が用意されている。これを加工することで色々な乱数を作り出すことができる。
コンピュータでは最大値を持つ自然乱数列を発生させて、それを最大値で割ることで*(0以上1以下)の一様乱数が得られる。また、(最大値+1)で割ることで[0,1)(0以上1未満)の一様乱数が得られる。このようにして生成した一様乱数は原理的に有理数のみで無理数は含まれないため、これは真の一様乱数ではない。デジタルコンピュータの性質上、無理数を扱うことはできない。
*(a以上b以下)の区間の一様乱数が必要な場合は、*の乱数列を用意して、これに(b-a)をかけて、さらにaを加えることで得られる。
[a,b)(a以上b未満)が必要な場合は同様にして[0,1)を利用する。
平均μ、分散σ2 の正規分布N(μ, σ2)のような正規乱数を作る場合、まず(0,1]の一様乱数をボックス=ミューラー法(Box-Muller transform)で変換してN(0, 1)の正規乱数をえることから始める。
一様乱数(0,1]の要素とを次の変換を用いて変換する。
この正規乱数にσをかけて、さらにμを加えることで正規分布N(μ, σ2)の正規乱数が得られる。
またこれとは別に、簡単で擬似的な方法として、12個の一様乱数(0,1]の和から6を減ずる方法もよく用いられる(中心極限定理を参照)。近年のパーソナルコンピュータはプロセッサの進歩によって三角関数や対数関数の演算が早くなっているため、1つの正規乱数あたり12回もの一様乱数生成を要するこの方法より、1つの正規乱数あたり1回の一様乱数生成で済むボックス=ミューラー法を用いた方がずっと高速である。
Nombre aleatori | Zufallszahl | Random number | Número aleatorio | Satunnaisluku | מספרים אקראיים | Número aleatório | 随机数