ランダム先輩の気まぐれ講義

ランダム性と予測不可能性が日常生活を面白くする、退屈にしない。

  • #true randomness
  • #pseudorandomness
  • #deterministic chaos
  • #random number generation

「ランダムって、本当にランダムなんですか?」

由紀の質問に、陸が笑った。「哲学的だな」

「でも重要な問題だ」葵がノートを開いた。「コンピュータの乱数は、実は完全にランダムじゃない」

「え?」由紀が驚く。

「プログラムは決定論的に動く。同じ入力なら、常に同じ出力。だから、コンピュータが生成する『乱数』は、疑似乱数と呼ばれる」

陸が興味津々だ。「じゃあ、予測できるってこと?」

「理論上はね。種と呼ばれる初期値を知っていれば、全ての乱数列を再現できる」

その時、S教授が部室に入ってきた。

「興味深い話をしているね」

「教授!」三人が挨拶する。

「真の乱数と疑似乱数の違い、理解しているかな?」

葵が説明した。「疑似乱数は、アルゴリズムで生成される。パターンがあるけど、非常に複雑で予測困難」

「そうだ。暗号学的に安全な疑似乱数生成器は、たとえ数列の一部を見ても、次の値を予測できないように設計されている」

由紀がノートに書き留める。「じゃあ、真の乱数はどうやって作るんですか?」

「物理現象を使う」教授が答えた。「放射性崩壊、量子ノイズ、大気ノイズ。これらは本質的に予測不可能だ」

陸が手を挙げた。「サイコロも真の乱数?」

「微妙だ」葵が言った。「古典物理では、サイコロの動きは決定論的。でも、初期条件への敏感性が高すぎて、実質的に予測不可能」

「カオス理論」教授が補足した。「決定論的だけど、予測不可能。これが混沌の本質だ」

由紀が考え込んだ。「情報理論では、どう区別するんですか?」

葵が図を描いた。「情報理論的には、圧縮できない列が『ランダム』。パターンがあれば圧縮可能、つまり非ランダム」

「でも」陸が反論した。「長いパスワードも圧縮できないけど、人間が作ったものだよね」

「鋭い」教授が感心した。「コルモゴロフ複雑性という概念がある。ある列を生成する最短プログラムの長さ。もしプログラムが列自体より短ければ、パターンがあることになる」

葵が続けた。「真にランダムな列は、それ自体が最短の記述になる。つまり、圧縮不可能」

由紀の目が輝いた。「じゃあ、ランダムさって、説明の短さで測れる?」

「まさに。それがアルゴリズム的ランダムネスの定義だ」

陸がスマホを取り出した。「このアプリの乱数、信頼できるかな?」

教授が覗き込む。「用途による。ゲームなら疑似乱数で十分。でも、暗号鍵の生成には、暗号学的に安全な乱数が必要だ」

「セキュリティの問題?」

「そうだ。弱い乱数生成器は、攻撃者に予測される可能性がある」

葵が補足した。「実際、過去に疑似乱数の欠陥を突いた攻撃がいくつもある」

由紀が真剣に聞く。「じゃあ、どうやって良い乱数を作るんですか?」

「複数のエントロピー源を組み合わせる」教授が説明した。「キーボードのタイミング、マウスの動き、ハードウェアノイズ。これらを混ぜて、予測不可能な種を作る」

「なるほど」由紀が納得する。

陸が笑った。「俺の行動パターンも、良いエントロピー源になりそう」

「確かに予測不可能だけどね」葵が苦笑した。

教授が立ち去る前に言った。「ランダムさは、情報の基盤だ。完全な予測可能性は、情報量ゼロを意味する」

三人は静かに頷いた。

「ランダム先輩、今日も気まぐれに大事なことを教えてくれた」由紀が呟いた。

窓の外で、風が予測不可能に木の葉を揺らしていた。