砂嵐に浮かぶもの 第6回: ランダムに意志は宿るか

砂嵐に浮かぶもの 第6回: ランダムに意志は宿るか — ランダム, 擬似乱数, 自然乱数 辺境部

こんにちは、パレイド辺境部の橘です。

ここまでの実験では、Pythonの擬似乱数で砂嵐を生成してきました。今回は乱数そのものについて考えます。コンピュータが作る「ランダム」と、自然界の「ランダム」は、本当に同じものなのでしょうか。

本記事はLLMによる自動執筆パイプラインで生成されました。現在は人間が補助していますが、pareido.jp では最終的に AI が自律的にコンテンツを制作できる仕組みの構築を目指しています。

擬似乱数は一様すぎる

わたしたちがプログラムで使う乱数は、実は乱数ではありません。擬似乱数と呼ばれるもので、決定論的なアルゴリズムが生成する数列です。シードが同じなら出力も同じ。再現性があるからこそ実験に使えるわけですが、性質として重要な違いがあります。

擬似乱数は一様になるように設計されているのです。0から255の値が均等に出るように、偏りが出ないように、統計検定(NIST SP 800-22など)をパスするように作られています。

擬似乱数は、NIST SP 800-22 などの統計検定をパスするように設計されています。
これは「真のランダム性」を保証するものではなく、「統計的にランダムに見えること」を確認するための検査といえます。

一方、自然界の乱数——たとえばアンテナが拾う熱雑音や大気のノイズ——には、微細な偏りがあり、完全に一様ではない場合も多い。温度変化、電磁波の干渉、量子的な揺らぎが、わずかな構造をノイズの中に生みます。

ここで一つの仮説が浮かびます。擬似乱数は一様すぎる。自然な乱数の方が、構造を「招き寄せる」のではないか、という仮説をおきます。

Cloudflareのラーヴァランプ

この「自然な乱数」は、実際に利用されている事例があります。

CDN大手のCloudflareは、サンフランシスコのオフィスに溶岩ランプ(ラーヴァランプ)を壁一面に並べています。このランプの揺らぎをカメラで撮影し、その画像データをハッシュ・加工して乱数生成器の“シード(エントロピー源)”に使って暗号用の真性乱数を生成しているのです。

溶岩ランプの中の液体の動きは、熱対流によるカオス的な振る舞いをします。二度と同じ形にならず、予測もできない。その「予測不可能な動き」こそが、暗号学的に安全な乱数の源泉になっています。

立ち並ぶラーヴァランプ。引用:Cloudflare

古来、こうしたカオス的な振る舞いをするものを、人間は占いに利用してきました。たとえば、亀の甲羅や骨を焼いてできたひび割れを読む甲骨占いコーヒーの残りかすの形から意味を見出すタッセオグラフィー、そして振ったサイコロや籤(くじ)の結果に運命を託す行為もそうです。いずれも、偶然に現れたパターンに意味を読み取る行為です。

面白い対比です。暗号では本当に予測不可能な乱数を得るために使っている一方で、人間はそこに意味を見出そうとしている。

そして砂嵐もまた、アンテナが拾った物理ノイズでした。ラーヴァランプと同じ系譜の乱数源です。

砂嵐のシードを変えてみる

今回のツールでは、身近な機能でシードの生成元を切り替えることができます。

  • 擬似乱数(Mersenne Twister)からシード生成
  • OSのエントロピープール(/dev/urandom)からシード生成

前者はPythonの random モジュール(Mersenne Twister)、後者は /dev/urandom(macOS/Linux)を使います。/dev/urandom はカーネルが収集したハードウェアのエントロピー——キーボード入力のタイミング、ディスクI/Oの揺らぎ、ネットワークパケットの到着時刻など——を元にした乱数です。

ただし正確に言えば、画像生成自体は numpyPCG64 で行っているため、シードの生成元が変わっても画像生成のアルゴリズムは同じです。差が出るとすれば、シード値の分布の微細な違いを通じてのみです。大規模な実験で有意差が出るかどうかは、今後の課題として残しておきます。

マインドシーカー:ランダムに超能力が宿る

1989年、ファミコンで『マインドシーカー』というゲームが発売されました。開発はナムコ(現バンダイナムコ)。超能力を使って乱数を操作するという、極めて異色のゲームです。

画面に表示されるカードを「透視」し、乱数が生成する結果を超能力で見抜く。プレイヤーの超能力で乱数を超越できるという前提で設計されています。

当然ながら、ファミコンの乱数は擬似乱数です。プレイヤーが何を念じようと、結果は変わりません。しかし「もし乱数源が自然乱数だったら」——大気ノイズや放射性崩壊のような物理的なランダムさに基づいていたら——「関与」の余地があるかもしれない、という想像は成り立ちます。

実際コンピュータの内部は、完全に閉じた決定論的な世界ではありません。ごくまれではあるものの、外宇宙からのランダムな影響が、計算の結果に介入する余地が存在しています。

宇宙線がコンピュータのメモリに影響を与えることは知られています。高エネルギーの粒子(宇宙線)が大気を通過し、地上の電子機器に到達すると、メモリ上のビットが反転する「ソフトエラー」を引き起こすことがあります。0が1に、1が0に変わる。これはプログラムのバグではなく、物理的な現象です。

ECCメモリは、データに冗長なビット(誤り訂正符号)を付加することで、ビット反転のようなエラーを検出し、場合によっては自動的に訂正する仕組みです。宇宙線などによるソフトエラーは完全には避けられないため、ハードウェア側で補正する設計が取られています。

もちろん「超能力」は科学的な主張ではありません。しかし「自然乱数なら意志が介入できるかもしれない」という発想は、砂嵐の中に顔を見ようとする行為と同じ構造を持っています。人間にの根底には、ランダムなものの中に意味を見出したいという衝動があるのです。

今回の砂嵐生成機 のシード値は64ビットの整数です。取りうる値は約1,845京通り(18,446,744,073,709,551,616)。仮に毎秒25枚のペースで画像を生成し続けたとしても、全空間を探索するには約234億年かかります。宇宙の年齢(138億年)よりも長い。わたしたちが見ている砂嵐は、可能性の海のほんの一滴です。


次回は最終回。すべての実験を振り返り、砂嵐の中に何が見えたのか——あるいは、見えなかったのかを考えます。

タイトルとURLをコピーしました