乱数(らんすう、Random Number)とは、どんな規則性もなく、次にどの数字が出るか予測できない数値のことです。コンピューターの世界では、ゲームの抽選から暗号技術まで、あらゆる場面で欠かせない役割を担っています。
現実世界に例えると、乱数はよく混ぜたトランプの山からカードを引くようなものです。次に何のカードが出るか、引く前には誰にも分かりません。この「先が読めない」という性質こそが、乱数の本質です。
使われる場面
乱数は、ゲームでの抽選演出、アンケートの対象者をランダムに選ぶ処理、シミュレーションでの条件設定、暗号鍵の生成など、非常に幅広い場面で利用されています。「予測できない」という性質が、公平さや安全性を保証するための土台になっています。
疑似乱数と真の乱数
| 種類 | 特徴 |
|---|---|
| 疑似乱数 | 計算式で作る。仕組みが分かれば予測できる可能性がある |
| 真の乱数 | 自然現象などから作る。理論上は完全に予測不可能 |
疑似乱数の仕組み
一般的なプログラムで使われるのは疑似乱数です。「シード値」と呼ばれる元になる数値から、決まった計算式を使って、一見ランダムに見える数の並びを生成します。同じシード値を使えば、いつでも同じ並びの数値を再現できるという特徴もあります。
疑似乱数の弱点
計算式によって作られている以上、シード値や計算の仕組みが分かれば、次に出る数値を予測できてしまうという弱点があります。ゲームの動作確認など再現性が求められる場面では役立つ一方、そのままでは安全性が求められる用途には不向きです。
暗号で使われる乱数の条件
パスワードの生成や暗号鍵の作成には、予測されにくさを特に強化した「暗号論的に安全な乱数」が使われます。通常の疑似乱数よりも複雑な仕組みで作られており、攻撃者が次の値を割り出すことが極めて困難になるよう設計されています。
真の乱数を得る方法
より確実な乱数が必要な場合には、大気雑音や放射性物質の崩壊、マウスの動きのわずかなブレといった、予測不可能な自然現象を利用して数値を作り出す方法もあります。計算式に頼らないため、理論上はより高い不規則性が得られます。
身近な例で見る乱数
スマートフォンゲームの「ガチャ」の当選確率や、オンラインくじの抽選、対戦ゲームでの命中判定なども、裏側では乱数を使った処理が行われています。私たちが日常的に触れているデジタルサービスの多くに、乱数の仕組みが組み込まれています。
プログラミングでの利用
多くのプログラミング言語には、乱数を手軽に生成するための関数があらかじめ用意されています。用途に応じて、通常の疑似乱数用の関数と、セキュリティ用途向けの関数を使い分けることが、安全なシステムを作るうえで重要になります。


コメント