Java演算法面試題(007) 蒙提霍爾問題(三門問題)

劉近光發表於2017-12-18

簡介

此問題本身和演算法無關,本質上一個關於概率的問題,在一些高等級的面試也經常被問及,因此收錄在Java演算法面試題系列中。

三門問題(Monty Hall problem)亦稱為蒙提霍爾問題、蒙特霍問題或蒙提霍爾悖論,大致出自美國的電視遊戲節目Let's Make a Deal。問題名字來自該節目的主持人蒙提·霍爾(Monty Hall)。問題描述如下:

假設你正在參加一個遊戲節目,你被要求在三扇門中選擇一扇:其中一扇後面有一輛車;其餘兩扇後面則是山羊。你選擇了一道門,假設是一號門,然後知道門後面有什麼的主持人,開啟了另一扇後面有山羊的門,假設是三號門。他然後問你:“你想選擇二號門嗎?”轉換你的選擇對你來說是一種優勢嗎?

解題思路


有三種可能的情況,全部都有相等的可能性(1/3):

  • 參賽者挑汽車,主持人挑兩頭羊的任何一頭。轉換將失敗。
  • 參賽者挑A羊,主持人挑B羊。轉換將贏得汽車。
  • 參賽者挑B羊,主持人挑A羊。轉換將贏得汽車。

問題是:關於第一種可能性的表述可以分成兩種可能嗎?

  • 參賽者挑汽車,主持人挑A羊。轉換將失敗。
  • 參賽者挑汽車,主持人挑B羊。轉換將失敗。

在後兩種情況,參賽者可以透過轉換選擇而贏得汽車。第一種情況是唯一一種參賽者透過保持原來選擇而贏的情況。因為三種情況中有兩種是透過轉換選擇而贏的,所以透過轉換選擇而贏的概率是2/3。


相關文章