編程破解蘇格拉底的心靈雞湯(一)

引言

大家應該看過這個故事

有一次,蘇格拉底帶着幾個學生去樹林摘蘋果,他讓每一個學生找一個自己認爲最大的蘋果,不能選2次,也不能走回頭路。

但當學生走出樹林時,他們都請求蘇格拉底,讓自己再選一次,有些人開始時就發現了,但以爲還有更大的,卻失望了;有些人恰好相反,他們先摘了自己認爲最大的果子,後來卻發現更好的,所以留下遺憾。。。。。

但蘇格拉底卻堅決不同意, 他說“孩子們,這就是人生,人生就是一次次無法重複的選擇”。


問題

那麼如果你是學生,該如何去摘取一個最大的蘋果呢?(不能走回頭路,只能摘一個)


思路

  • 假設再叢林中一共遇到N個蘋果,這些蘋果的大小完全隨機,我們可以令N = 100
  • 那麼,首先需要先放棄M個蘋果,並且記錄他們打大小。
  • 然後,從第M + 1 個蘋果開始,一旦有一個蘋果的大小超過了之前所有的蘋果,就選這一個,否則就接着走。
  • 如果走到最後都沒有看到比之前所有蘋果更大的,那就只能被迫選最後一個。
  • 那麼,M取多少合適?

          M太小,容易遇到一個不大但是比之前所有蘋果更大的

          M太大,很容易被迫選最後一個

  • 藉助程序,探究選中最大蘋果的概率,被迫選最後一個的概率和M的關係,對於每個M,都做了100萬次實驗。


黑色表示找到最大蘋果的概率; 紅線表示被迫選最後一個蘋果的概率。

可以看到,當M = 35 - 40之間的時候,找到蘋果的概率最大。

  • 不考慮最後一個蘋果是最大的情況,如果最大的蘋果出現在前M個蘋果裏,那麼肯定會被迫選擇最後一個,所以概率與M/100成正比,紅線是是直線很好理解。
  • 問題來了,如何能夠計算出找到最大蘋果的概率以及求出對應的M值。
  • 首先,假設最大的蘋果出現在第i個,如果 i = M + 1, 那麼當放棄M個蘋果後,第M + 1 個顯然符合要求。
  • 如果i = M + 2, 那麼需要前M + 1個蘋果相對最大的,而且不能出現在第M+1個,否則就直接選擇第M+1個,遊戲失敗,這樣成功概率爲M/M+1
  • 如果i = M + K那麼前M + K - 1個蘋果裏,相對最大的就必須出現在前M個當中,否則就必然會導致錯誤的結果,這樣,成功的概率爲M/M + K - 1

   

  •  e=2.718100/e =36.8, 而在實驗裏,最大值也是出現在捨棄37個蘋果的,可以說實驗和物理吻合。這也可以被稱爲37% 法則。
  • l所以,如果你是蘇格拉底的學生,進入樹林,前面的蘋果都不要選,但記住大小,到1/3多一點的地方,選擇比之前的遇到的蘋果都要大的即可。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章