ブログ一覧
math2026-07-105分

乱数生成機

乱数を生成するツール。Mersenne Twister、擬似乱数、真の乱数の違いと計算機科学における応用を解説します。


乱数生成機


playing cards on brown wooden table

Photo by Aidan Howe on Unsplash

乱数とは

先週、大学時代の友人で統計学者の佐藤が酒の席で言い放った。「世の中の『ランダム』の99%は、実はランダムじゃないんだぜ」
彼の言う通り——計算機科学、統計学、暗号学、シミュレーションなどで使われる「乱数」には深い世界がある。乱数とは予測不可能な数値系列のことだが、大きく分けて真の乱数擬似乱数(疑似乱数)の2種類に分類される。この記事では、その基礎概念と生成アルゴリズム、実用的な応用を紐解いていく。

乱数の分類

真の乱数

放射性崩壊。大気ノイズ。量子もつれ。真の乱数は、そういう物理現象から生まれる。予測不可能、再現不能——まさに自然の気まぐれだ。計算機で真の乱数を得るには、専用のハードウェア(エントロピーソース)が必要になる。ソフトだけでは太刀打ちできない領域だ。

擬似乱数

一方、こちらは数学のおもちゃ箱。アルゴリズムを使って数値をでっち上げる。シード(初期値)が同じなら、同じ数列が繰り返される——だから再現可能だ。コンピュータの世界で「乱数」と言えば、99%はこちらの擬似乱数だ。

Mersenne Twister

概要

1997年、松本典彦と西村拓男という2人の日本人が革命を起こした。Mersenne Twister——この名を聞いたことがあるだろうか。高品質で超高速、まさに乱数界のドリームマシン。現在最も広く使われるアルゴリズムの一つだ。

特徴

数字を見れば、その凄みがわかる。

  • 周期: $2^{19937} - 1$(メルセンヌ素数)——宇宙の年齢より長い

  • 等価分布: 623次元まで一様に分布

  • 計算速度: 超高速

  • シード: 32ビット整数


基本原理

線形合同法を進化させた手法で、内部に623個の32ビット整数の「状態」を持つ。この塊を捏ね回すようにして乱数を生成する——まるで巨大なサイコロを振り続けるようなものだ。

乱数分布

一様分布

最もシンプルで基本的な形だ。指定範囲内の全数値が「公平」に生まれる。サイコロを振るようなもの——出目に好き嫌いはない。

$$P(x) = \frac{1}{b-a} \quad (a \leq x \leq b)$$

正規分布

ベルカーブ。釣鐘型。平均値の近くがダントツで出やすい。人間の身長やテストの点数——自然界の多くの現象はこの分布に従う。いわば「標準装備」の分布だ。

$$P(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$$

指数分布

「次の地震はいつ?」「故障までの時間は?」——待ち時間を扱う分布だ。時間が経てば経つほど確率は指数的に減っていく。

$$P(x) = \lambda e^{-\lambda x} \quad (x \geq 0)$$

実用的アプリケーション

シミュレーション

モンテカルロ法では乱数で複雑な確率現象をモデル化する。金融市場の暴落、台風の進路、感染症の拡大——現実をコピーするための魔法の砂だ。

ゲーム開発

敵の出現パターン、宝箱の中身、ダンジョンの自動生成。乱数がなければ、ひとつとして同じゲーム体験は生まれない。良い乱数は良いゲームの隠れた主役だ。

暗号学

パスワードの生成。暗号鍵の作成。セッショントークン——これらに「弱い乱数」を使うのは、宝箱の鍵をガムテープで閉じるようなもの。暗号用途には真の乱数か、暗号学的に安全な擬似乱数が必須だ。

まとめ

乱数生成機は数学と計算機科学の要だ。Mersenne Twisterを筆頭とする擬似乱数アルゴリズムは、あらゆるアプリケーションで水面下で活躍している。「ランダム」の正体を知れば、世界の見え方が変わる——佐藤の言葉は真実だったのだ。