前言:
早上看到一片關於三門問題的博客http://www.cnblogs.com/twocats/p/3440398.html,抱着該博客結論的懷疑態度用C#語言寫了一些代碼。實驗證明該博客的結論是正確,如果變換選擇選中車的概率的確是2/3.
代碼:
變量聲明
//總測試次數 static long AllCount = 0; //抽到車次數 static long CarCount = 0; protected static Random r = new Random(); //1代表羊,2代表car static int x = 1; static int y = 2; static int z = 1;
方法函數
/// <summary> /// 啟動游戲 /// </summary> /// <param name="firstChoose">第一次選擇</param> /// <param name="secondChoose">第二次選擇</param> static void gameBegin(int firstChoose,int secondChoose) { if (firstChoose == 1)//主持人把z打開,開始第二次選擇 { AllCount++; switch (secondChoose) { //不換,依舊選擇x case 0: break; case 1: CarCount++; break; } } if (firstChoose == 2)//主持人把xz中其中一個打開,開始第二次選擇 { //開始選擇.0為不換,1為換 AllCount++; switch (secondChoose) { //不換,依舊選擇y case 0: CarCount++; break; case 1: break; } } if (firstChoose == 3)//選擇y,主持人把x門打開,開始第二次選擇 { AllCount++; switch (secondChoose) { //不換,依舊選擇z case 0: break; case 1: CarCount++; break; } } }
主函數
static void Main(String[] args) { for (int i = 0; i < 1000; i++) { int firstchoose = r.Next(1, 4); gameBegin(firstchoose,1); } double result=(double)CarCount/AllCount; Console.WriteLine("總共測試了{0}次,抽到車{1}次,換抽到的概率為{2}%",AllCount,CarCount,result*100); Console.ReadKey(); }
結論:
由於一些問題不能貼圖,這里直接附上結果抽了1000次,抽到車690次,抽到概率69%。有問題希望大家留言