猴子打字机

**無限猴子定理**的表述如下：讓一隻猴子在打字機上隨機地按鍵，當按鍵時間達到無窮時，幾乎必然能夠打出任何給定的文字，比如莎士比亞的全套著作。

在這裡，幾乎必然是一個有特定含義的數學術語，「猴子」也不是一隻真正意義上的猴子，它被用來比喻成一個可以產生無限隨機字母序列的抽象設備。這個理論說明把一個很大但有限的數看成無限的推論是錯誤的。猴子精確地通過鍵盤敲打出一部完整的作品比如說莎士比亞的哈姆雷特，在宇宙的生命週期中發生的機率也是極其低的，但並不是零。

這個理論的變化形式包括多個甚至無限多個打字員，以及目標文本從一個完整的圖書館到一個簡單的句子。這些表述可以追述到亞里斯多德的《論產生和毀滅》和西塞羅的《論神之本性》，經過布萊茲・帕斯卡和喬納森・斯威夫特，最後到現在的形象的打字員的表述形式。在 20 世紀早期，埃米爾・鮑萊耳和亞瑟・愛丁頓運用這個理論在統計力學基礎中闡述隱式時間標尺。

## 起源

**無限猴子定理**是來自埃米爾・鮑萊耳一本 1913 年出版談機率的書籍，當中介紹了「打字的猴子」的概念。這個定理是機率論中的科摩哥洛夫的零一律的其中一個命題的例子。不過，當波萊爾在書中提出零一律的這個特例時，科摩哥洛夫的一般敘述並未給出（科摩哥洛夫那本機率論的著作直到 1933 年才出版）。

## 定義

### 普遍認同的觀點

關於此定理的敘述為：有無限隻猴子用無限的時間會產生特定的文章。其實不必要出現了兩件無限的事物，一隻猴子打字無限次已經足夠打出任何文章，而無限隻猴子則能即時產生所有可能的文章。

### 其他定義

其他取代的敘述，可能是用大英博物館或美國國會圖書館取代法國國家圖書館；另一個常見的版本是英語使用者常用的，就是猴子會打出莎士比亞的著作。

## 出處

這一典故的出處，喬納森・斯威夫特 1782 年出版的的《格列佛遊記》，第三部分第五章，教授要其學生通過經常轉動機械把手產生一些隨機的字句，以建立所有科學知識的列表。

## 證明

### 直接證明

兩個獨立事件同時發生的機率等於其中每個事件單獨發生的機率的乘積。比如，在某一天台北下雨的可能性為 0.3，舊金山地震的可能性是 0.008（這兩個事件可以視為**相互獨立**的），那麼它們同時發生的機率是 0.3×0.008 = 0.0024。

假設一個打字機有 50 個鍵，想要打出的字是「banana」。隨機的打字時，打出第一個字母「b」的機率是 1/50，打出第二個字母「a」的機率也是 1/50，因為事件是獨立的，所以一開始就打出單詞「banana」的機率是：

　
: (1/50)×(1/50)×(1/50)×(1/50)×(1/50)×(1/50) =(1/50)6，

這個機率小於 150 億分之 1。同理，接下來繼續打出「banana」的機率也是 1/506。

所以，在給定的六個字母**沒有**打出「banana」的機率是 1−(1/50)6。因為每一段（6 個字母）文字都是獨立的，連續 n 段都沒有打出「banana」的機率 _X_n 是：

　
: $X_{n}=\left(1-{\frac {1}{50^{6}}}\right)^{n}\,$

隨著 _n_ 變大，_X_n 在變小。當 _n_ 等於 100 萬時，_X_n 大約是 0.9999（沒有打出「banana」的機率是 99.99%）；但是當 _n_ 等於 100 億時 _X_n 大約是 0.53（沒有打出「banana」的機率是 53%）；當 _n_ 等於 1000 億時 _X_n 大約是 0.0017（沒有打出「banana」機率是 0.17%）; 當 _n_ 趨於無窮時 _X_n 趨於零。這就是說，只要使 _n_ 足夠大，_X_n 可以變得足夠小。

同樣的論證也可以說明在無限多的猴子中有至少一個會打出一段特定的文章。這裡 _X_n =(1−(1/50)6)n，其中 _X_n 表示在前 n 個猴子中沒有一個一次打出 _banana_ 的機率。當我們有 1000 億隻猴子時，這個機率降低到 0.17%，並且隨著猴子數量 n 趨於無窮大，沒有打出「banana」的機率 _X_n 趨於 0。

但是，在只有有限的時間和有限隻猴子時，結論就大不一樣了。如果我們的猴子數量和可觀測宇宙中的基本粒子數量一樣多，大約 1080 隻，每秒鐘打 1000 個字，持續打 100 倍於宇宙的生命長度的時間（大約 1020 秒）有猴子能夠打出一本小書的機率也趨近於 0。

### 無限長的字符串

以上兩種情況可以擴展到所有的字符串：

* 給定一個無限長的字符串，其中的每一個字符都是隨機產生的，那麼任意有限的字符串都會作為一個子字符串出現在其中（事實上要出現無限多次）。
* 給定一個序列，其中有無限多個無限長的字符串，其中每一個字符串中的每一個字符都是隨機產生的，那麼任意有限的字符串都會出現在其中某些字符串的開頭（事實上是無限多個字符串的開頭）。

對於第二個定理，設 _E_k 某給定字符串出現在第 k 個字符串開頭的事件。有固定的且不為零的機率 _p_ 是這個事件發生，而且 _E_k 是獨立的，所以：

　
: $\sum _{i=1}^{\infty }P(E_{k})=\sum _{i=1}^{\infty }p=\infty ,$

事件 _E_k 發生無窮多次的機率是 1（波萊爾－坎泰利引理）。第一個定理可以類似地處理，先將無限長的字符串分割，使得每一段的長度和給定字符串相同，然後設 _E_k 是第 _k_ 段等於給定字符串的事件。

### 機率

不算標點符號、空格、大小寫，一個猴子隨機打字打出的第一個字母和《哈姆雷特》中相同的機率是 ${\frac {1}{26}}$ ，前兩個字母相同的機率是 ${\frac {1}{676}}$ （即 ${\frac {1}{26\times 26}}$ ）。因為機率發生了指數爆炸，前 20 個字母相同的機率是 $26^{-20}={\frac {1}{19,928,148,895,209,409,152,340,197,376}}\approx 5.02\cdot 10^{-29}$ 。而打出的字和《哈姆雷特》的全部文本相同的機率降低到難以想像。整部《哈姆雷特》大約有 130,000 個字母。雖然有 3.4×10183,946 分之一的機率一遍就正確地打出所有文本，在打出正確的文字之前平均需要輸入的字母數量也要 3.4×10183,946，或者包括標點符號，4.4×10360,783

即使可觀測宇宙中充滿了猴子一直不停地打字，能夠打出一部《哈姆雷特》的機率仍然少於 10183,800 分之一。

## 現實

實際在現實中，猴子打出一篇像樣的文章的機率比理論上來的更加低。2003 年，普利茅斯大學藝術媒體實驗室課程的教師和學生使用 2,000 英鎊津貼做了這個實驗，結果打出了 5 張幾乎全是『S』的紙。最終打出的文字沒能成為一個完整的句子。

程式設計師 Jesse 使用 Hadoop、亞馬遜 EC2 和 Ubuntu，並以 ASCII 形式存在的隨機數成功重現《莎士比亞全集》。

## 相關條目

* 摩菲定理
* Twitch Plays Pokémon

## 注釋

## 參考文獻

## 外部連結

* The Million Monkey Room, October 2008, a satirical essay by D.R. Belz from The Baltimore Examiner
* Ask Dr. Math article （頁面存檔備份，存於網際網路檔案館）, August 1998, Adam Bridge
* The Parable of the Monkeys （頁面存檔備份，存於網際網路檔案館）, a bibliography with quotations
* Infinite Monkey / Dawkin's Weasel demo applet (in Monash University's Virtual Lab)
* RFC 2795 （頁面存檔備份，存於網際網路檔案館） - The Infinite Monkey Protocol Suite (IMPS)