乱数について
乱数(random number)
乱数とは、出現する値に規則性のない数です。
乱数の性質としては以下のものが挙げられます。
- 無作為性(randomness)
- 生成する数に統計的な偏りが存在せず、全く規則性がないという性質です。
- 再現不可能性(unpredictability)
- 過去に生成した数列と同一の数列を生成できない(再現できない)性質です。
- 予測不能性(non-repeatability)
- 過去に生成した数列から次の数を予測することができない性質です。
擬似乱数(pseudo random numbers)
擬似乱数とは、コンピュータなどを利用して確定的な計算によって生成した擬似的な乱数です。
擬似乱数の由来
コンピュータ上でソフトウェアを用いて乱数を作成する場合、記述した通りに動くことが求められるプログラムの制約上、完全な乱数を生成することはできません。
コンピューターは確定的な計算プログラムによって適度に不規則な数が出現する数式を利用するか、あらかじめ定義しておいた乱数表を用いて乱数を作成します。
そのため、「擬似」乱数と呼ばれます。
なお、擬似乱数は一見規則性が無いように見えて特定の計算式によって結果が求められたりする可能性があります。
乱数生成の規則性が露呈した場合、計算式は乱数を生成できないものと見なされます。
擬似乱数生成器(pseudo random number generator)
乱数を生成するソフトウェアを擬似乱数生成器といいます。
擬似乱数生成法について
一般的な擬似乱数生成法として、以下のものが挙げられます。
ただし、この生成法では利用した方式と過去の出力が既知であれば将来の出力を予測可能であるため、暗号技術に使用することはできません。
- 平方採中法
- 線形合同法(乗算合同法・混合合同法)
- 線形帰還シフトレジスタ
- メルセンヌ・ツイスタ、キャリー付き乗算
- Xorshift
- Lagged Fibonacci法
- カオス乱数
暗号学的に安全な擬似乱数生成法として以下のものが挙げられます。
以下の生成法であれば、利用した方式と過去の出力が既知でも未来の出力は予測不可能となります。
- BBS(Blum-Blum-Shub)
- Fortuna
乱数生成器(Random Number Generator)について
コンピュータ上で乱数を生成する場合、ソフトウェアで生成する方法とハードウェアで生成する方法があります。
乱数を生成するハードウェアを「乱数生成器」といい、音や熱などの自然現象をセンサーで検知するなどして、乱数を生成します。
乱数生成器では、真の乱数を生成することができます。
擬似乱数ではない、真の乱数の生成法として以下の方法があります。
- サイコロをふる
- 熱や音などの自然現象