Swift Playground: 三門問題的解法

作者:Thomas Hanning,原文鏈接,原文日期:2015-09-27
譯者:SergioChan;校對:numbbbbb;定稿:numbbbbb

三門問題是一個超級讓人摸不著頭腦的概率問題。我們會在 Swift Playground 里來演示它的解法,而不是通過枯燥的數學解釋。

三門問題

這個問題的核心很簡單。在 1990 年的Parade雜志中是這么解釋的:

假設你正在參加一個游戲節(jié)目,需要在三扇門中選擇一扇。其中一扇后面有一輛車,其余兩扇后面則是羊。你選擇了一扇門,假設是 1 號門,主持人知道門后面是什么,他開啟了另一扇后面有羊的門,假設是3號門。然后他問你:“你想選擇 2 號門嗎?”這時候你改變決策是有利的嗎?

實際上,結果是有利的。如果你選擇另外一扇門,你就有2/3的概率贏得汽車。相反,如果你不改變你的選擇,贏得汽車的概率就只有 1/3。當然你可以從數學的角度去證明,但是這里我們希望驗證一下。

算法

算法很簡單。首先,你選擇一扇門。然后主持人打開一扇后面有羊的門。如果你的第一次選擇就選中了有車的門,他就要在剩下兩扇門中隨機選擇一扇開啟。如果你的第一次選擇選中的是有羊的門,他就要把剩下一扇也是羊的門打開。最后,你是否改變選擇取決于你采取的策略。

Playground

我們來編寫一個簡單的 Playground 程序。我們會對每種選擇策略執(zhí)行 100000 次測試來得出大致的概率。

import UIKit

enum Strategy {
    case Change
    case Stay
}


func play(strategy:Strategy,repeats:Int) -> Int {
    var wins = 0
    
    for _ in 0..<repeats {
        
        let car = Int(arc4random_uniform(3))
        
        var playerChoice = Int(arc4random_uniform(3))
        
        if strategy == Strategy.Change {
            
            if playerChoice == car {
                var remainingDoors = [0,1,2]
                remainingDoors.removeAtIndex(playerChoice)
                playerChoice = remainingDoors[Int(arc4random_uniform(2))]
            } else {
                playerChoice = car
            }
            
        }
        
        if car == playerChoice {
            wins++
        }
    }
    
    return wins
}

var repeats = 100000

var winsStrategyChange = play(.Change, repeats: repeats)
var winsStrategyStay = play(.Stay, repeats: repeats)
        
var quoteStrategyChange = Double(winsStrategyChange) / Double(repeats)
var quoteStrategyStay = Double(winsStrategyStay) / Double(repeats)

結果

每次運行這個 Playground 得到的結果都不完全相同,但是都很接近的。例如,其中一次結果是:

  • 改變選擇且贏得汽車的次數: 66,461
    
  • 不改變選擇且贏得汽車的次數: 33,509
    
  • 改變選擇且贏得汽車的概率: 0,66461
    
  • 不改變選擇且贏得汽車的概率: 0,33509
    

結果正如理論所預計的那樣。如果你不改變你的選擇,你就只有百分之 33 的概率贏得汽車。如果你改變了你的選擇,這個概率就上升到了百分之 66。

結論

在 Playground 中做實驗是十分有趣的。在這種情況下,我們可以驗證那些乍一看摸不著頭腦的理論。

引用

圖片: @ Lim ChewHow / shutterstock.com

維基百科: Monty Hall Problem

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 你正參加一個節(jié)目,一共有三扇門,只有一扇門后面有汽車,其余兩扇門是空,選到汽車算贏。你選了一扇,然后主持人會在剩下...
    哈啊啊啊啊啊啊閱讀 28,567評論 21 5
  • 最初看到這個問題是初中的時候買了一本有關數學謎題的書里面概率論的一張的課后拓展就是說到三門問題,當時作為一個擴展閱...
    知曰閱讀 4,549評論 1 13
  • 三門問題(Monty Hall problem)亦稱為蒙提霍爾問題、蒙特霍問題或蒙提霍爾悖論,大致出自美國的電視游...
    丟子丟閱讀 3,481評論 0 1
  • 一、題目 工程師 M 發(fā)明了一種游戲:M 將一個小球隨機放入完全相同的三個盒子中的某一個,玩家選中裝有球的盒子即獲...
    GitHubClub閱讀 2,726評論 27 49
  • 一、什么是Cocoa ①Cocoa來源 1996年,Gil Amelio掌權的Apple正在開發(fā)Copland操作...
    oneofai閱讀 5,137評論 1 11

友情鏈接更多精彩內容