Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

乱数(ラン スウ)とは | 意味や読み方など丁寧でわかりやすい用語解説

乱数(ラン スウ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

乱数 (ラン スウ)

英語表記

random number (ランダムナンバー)

用語解説

乱数とは、次にどのような値が出現するかを予測することができず、特定のパターンを持たない数列のことである。情報技術の分野では、セキュリティ、シミュレーション、データ分析など多岐にわたる用途で不可欠な要素となっている。その本質的な特性は「予測不可能性」にあり、この特性が様々なシステムにおける信頼性や安全性を担保する基盤となる。

乱数はその生成方法によって大きく二つの種類に分けられる。一つは「真の乱数(True Random Number、TRN)」、もう一つは「擬似乱数(Pseudo-Random Number、PRN)」である。

真の乱数は、物理現象の不確定性に基づき生成される。例えば、大気ノイズ、放射性物質の崩壊、熱雑音といった自然現象、あるいはコンピュータ内部の微細なタイミングのズレ、マウスの動きやキーボード入力の間隔といった人間が操作する際の不規則な挙動など、予測不可能な物理的な事象からエントロピー(不確実性)を収集し、これを数値化することで生成される。真の乱数は、その生成過程が非決定的であるため、完全に予測不可能であり、高い品質の乱数として扱われる。しかし、生成速度が遅く、専用のハードウェアを必要とすることが多いという欠点を持つ。主に、暗号鍵の生成や高セキュリティが要求される場面で利用される。

一方、擬似乱数は、特定のアルゴリズムと初期値(シード)を用いて計算によって生成される数列である。この数列は、一見するとランダムに見えるが、アルゴリズムとシードが分かれば、次にどのような値が生成されるかを完全に予測できるという決定論的な性質を持つ。したがって、厳密には真の乱数ではないが、統計的な偏りが少なく、高速に大量の乱数を生成できる利点がある。また、同じシードを与えれば常に同じ数列を再現できるため、デバッグやシミュレーションの再現性確保に役立つ。代表的な擬似乱数生成アルゴリズムには、線形合同法やメルセンヌ・ツイスターなどがある。擬似乱数は、ゲームのキャラクターの動き、シミュレーションモデル、統計的なサンプリングなど、予測不可能性がそこまで厳密に要求されないが、大量かつ高速な乱数が必要な用途で広く利用される。擬似乱数には周期性があり、長期間使用すると同じ数列が繰り返される可能性があるため、用途に応じたアルゴリズムの選択が重要となる。

乱数の品質を評価する上で重要な要素は、統計的無作為性と予測不可能性である。統計的無作為性とは、生成される数値が特定の範囲内で均等に出現し、特定のパターンや偏りがないことを意味する。予測不可能性は、特に暗号技術において極めて重要であり、過去の乱数系列から次の乱数を推測することが事実上不可能である必要がある。

セキュリティ分野では、真の乱数に近い品質を持つ擬似乱数が求められる場合が多く、これを「暗号論的擬似乱数生成器(Cryptographically Secure Pseudo-Random Number Generator、CSPRNG)」と呼ぶ。CSPRNGは、真の乱数源から得られるエントロピーをシードとして利用し、予測が非常に困難な乱数を生成する。もし攻撃者がCSPRNGの内部状態を一部知ったとしても、過去の乱数を推測したり、未来の乱数を予測したりすることが極めて困難になるように設計されている。これにより、暗号鍵の生成、パスワードのソルト、ワンタイムパスワード、セッションIDなど、セキュリティが極めて重要なアプリケーションで利用され、システムの安全性を高める上で不可欠な技術となっている。CSPRNGは、真の乱数の利点である高い予測不可能性と、擬似乱数の利点である高速な生成能力を両立させることを目指したものである。

乱数の理解は、現代のITシステムを設計・運用する上で基礎的かつ重要な知識であり、その特性と用途を適切に選択することが求められる。特に、セキュリティが関わる場面では、真の乱数と擬似乱数の違い、そしてCSPRNGの必要性を深く理解することが、堅牢なシステム構築の第一歩となる。

関連コンテンツ

関連ITニュース

関連プログラミング言語