日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】蒙提霍尔问题的概率原理及随机化模拟

發布時間:2025/3/15 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】蒙提霍尔问题的概率原理及随机化模拟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題引入

人們常說:“相信自己的直覺”、“跟著自己的直覺走,沒錯的”、“要堅定自己的路”……

不是說這些話不對,但有時候結果還真不是我們直覺能get到的……

這是一個有趣的問題——三門問題,希望給大家一些啟發。

三門問題

三門問題(Monty Hall problem)亦稱為蒙提霍爾問題、蒙特霍問題或蒙提霍爾悖論,大致出自美國的電視游戲節目Let’s Make a Deal。問題名字來自該節目的主持人蒙提·霍爾(Monty Hall)。參賽者會看見三扇關閉了的門,其中一扇的后面有一輛汽車,選中后面有車的那扇門可贏得該汽車,另外兩扇門后面則各藏有一只山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人開啟剩下兩扇門的其中一扇,露出其中一只山羊。主持人其后會問參賽者要不要換另一扇仍然關上的門。問題是:換另一扇門會否增加參賽者贏得汽車的機率?如果嚴格按照上述的條件,即主持人清楚地知道,自己打開的那扇門后是羊,那么答案是會。不換門的話,贏得汽車的幾率是1/3。換門的話,贏得汽車的幾率是2/3。

這個問題亦被叫做蒙提霍爾悖論:雖然該問題的答案在邏輯上并不自相矛盾,但十分違反直覺。這問題曾引起一陣熱烈的討論。

Java模擬驗證

這次也不能說是什么編程實現了,只能說做個隨機化模擬吧,把數據量開的大一些,就1’000’000吧,問題不大。

這個模擬的思路就是我們用一個set,裝 0, 1, 2 三個數字,模擬三扇門,然后先隨機生成一下0~2之間的一個隨機數(也就是真正的汽車所在位置)。
接下來我們隨機生成一個參賽者的選擇(他沒有任何場外信息,只能三蒙一),由于我們模擬的是選手更改選擇的情況,所以這個就沒什么意義了,那就刪去它。
然后還要隨機生成一個主持人打開的門。主持人顯然是知道車在哪里的,不論被沒被參賽者第一次選中,主持人都只會打開一扇空門(也就是藏有山羊的門)。這個隨機序號不能與真正的結果重合,也不能與選手選中的序號重合(這兩種情況也可能重合)。這個序列也刪去它。
一共只有三個數,刪了兩個,就只剩一個了。我們做的模擬是選手選擇換門,所以剩下的門就是他選的答案,看一看與最初的隨機答案一不一致就行。

最后概率竟是2/3。

import java.util.HashSet; import java.util.Random; import java.util.Set;public class Main {public static void main(String[] args) {int times = 1000000;int winNum = 0;Set<Integer> set = new HashSet<>();Random random = new Random();for (int i = 0; i < times; i++) {set.add(0);set.add(1);set.add(2);//車在隨機一個門后面int result = random.nextInt(3);//從三個門里面盲猜一個門int guessNum = random.nextInt(3);//剔除選項set.remove(guessNum);int removeNum = 3;while (removeNum == result || removeNum == guessNum) {removeNum = random.nextInt(3);}//主持人再刪一個set.remove(removeNum);if (set.contains(result)) {winNum++;}}System.out.println("總游戲次數是:" + times);System.out.println("當更改選擇的時候,獲勝次數是:" + winNum);System.out.printf("更改選擇的勝率是:%.3f%%", (double)winNum/times*100);} }

一則結果:

原理

不能只是知其然,更要知其所以然。
這個問題的分析還要回歸到概率論上。

容易理解的分析

先給一個不規范的分析,更好理解:
試想原先三蒙一,概率確實是1/3,但反過來考慮,不是第一次選中的概率是2/3,那在主持人幫我們排掉一個不可能情況的情況下,我們換成沒人動過的門,成功的概率是2/3,是大于我們“堅持信仰”概率的。

詳細分析

主持人其實沒啥用,所以可以不看:
第一次選的空門(概率66.6%),之后主持人開另一個空門,換門,得到汽車。
第一次選的汽車(概率33.3%),之后主持人開另一個空門,不換門,得到汽車。

這里影響到結果的概率問題只發生在第一次選門上,如果條件如上設置,當一開始的門選定后,事件的結果也就決定了,所以這里不存在之后主持人是選擇1號空門,還是2號空門的問題,所以在做概率計算是不考慮主持人的選擇。

如果也要考慮主持人的話:
第一次選的空門1(概率1/3),之后主持人開另一個空門,換門,得到汽車。事件總概率1/3。
第一次選的空門2(概率1/3),之后主持人開另一個空門,換門,得到汽車。事件總概率1/3。
第一次選的汽車(概率1/3),之后主持人開另一個空門1(概率1/2),不換門,得到汽車 這個事件總概率

第一次選的汽車(概率1/3),之后主持人開另一個空門2(概率1/2),不換門,得到汽車 這個事件總概率

主持人選1號空門還是2號空門打開,這里有個主持人的選擇概率,我假設的是主持人隨機選擇(抽簽或者隨意),所以各給了50%的概率,如果主持人就是喜歡1號空門,必開1號,那么也就成了1號(100%),2號(0%)了,最后結果并不影響。
所以開始選中汽車,最后換門不得獎的概率是33.3%,開始選中空門,換門最后得獎的概率是66.6%。

當然了,其實分析題意就知道主持人這邊與概率根本沒有關系,所以真的不必考慮他。

Ending……

類似問題(Update on 2020.2.23)

找到了一篇博客,也是類似的問題。
仔細看看就能加深理解啦!

總結

以上是生活随笔為你收集整理的【Java】蒙提霍尔问题的概率原理及随机化模拟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。