無限の猿定理実験場
無限の猿定理を自分で試してみたくなったので簡単な実験用webサイトを作ってみました。
日本語が絡むと処理が面倒なので英字のみに対応しています。
『無限の猿定理』とは
そもそも『無限の猿定理』とは
無作為な文字入力でも、無限の時間続けていたらいずれ1冊の本のような意味のある文章さえ出来上がるという理論。
無作為な文字入力を「猿がキーボードを叩く」、意味のある文章列を「シェイクスピアの戯曲」として表現されるのでこの定理名となっています。
無限の猿定理実験場の使用方法
操作は簡単。
①「猿への命令を入力」欄に文字を入力

試したい文字列を「猿への命令を入力」欄に半角英字(小文字)で入力します。
半角英字かつ小文字以外の文字は使えないのでご注意ください。
②「猿にお願いする」を押す
文字を入力すると文字数に合わせて推定必要文字と推定必要時間が表示されます。

「猿にお願いする」ボタンを押すと実験がスタート。
③あとは待つだけ
文字は5ミリ秒に1文字(1秒間に200文字)のスピードで出力されます。

実験開始ボタンが一時停止ボタンになるので止めたい場合はそちらを押してください。
「途中結果」の欄に現在の出力文字数と経過秒数、そしてこれまでにヒットした惜しい文字とその回数がリアルタイムで表示されます。
④完成
文字が完成するとストップします。

3文字だと1-2分で文字を完成させられますが、1文字増えるごとに爆発的に必要時間が増えるのでぜひ試してみて下さい。

仕様について
このサイトを作るうえでいくつか妥協した部分があります。
使用可能な文字
まずは使用できる文字。
半角小文字英数の26文字だけを使用可能としていますが、日本語(ひらがな46文字)や数字(10文字)を含めるようにするとそれだけ出力一回あたりの確率が大幅に下がってしまいます。
それでは膨大な時間がかかってしまうので、大文字等も含めず最低限の26文字としました。
出力される文字の保持
本当は完成までに出力された文字をすべて残しておいた方が必要な文字数の膨大さが実感できて良いのですが、文字数が多くなればなるほど処理が重くなって速度が10分の1以下になり、そのまま数時間するとメモリ不足でページエラーとなり続行不能となりました。

そこで文字をすべて保持するのは諦めて、300文字ごとに破棄する形にしてあります。
バックグラウンドでは稼働しない
長時間出力される文字列をただただ見ているのもアレなので動かしながら他のサイトなどを見たいところですが、JSの仕様なのかバックグラウンドになると止まってしまいます。
同時に他の事をしたい場合は別ウインドウでお願いします。
やってみたいこと
理想としては、誰も見ていないor誰か一人でも見ていればシェイクスピアの戯曲を目指して文字を出力し続けるような仕組みを作ってみたいものです。
そこで「これまでに最初の〇〇文字まで完成しました」みたいなのを表示出来たら面白そう。





コメント