假设你在进行一个游戏节目。现给三扇门供你选择:一扇门后面是一辆轿车,另两 c髸?k鴣?
扇门后面分别都是一头山羊。你的目的当然是要想得到比较值钱的轿车,但你却并 脐苍)UJ块
不能看到门后面的真实情况。主持人先让你作第一次选择。在你选择了一扇门后, 貴白箋嶉?
知道其余两扇门后面是什么的主持人,打开了另一扇门给你看,而且,当然,那里 cn摚"a巬X?
有一头山羊。现在主持人告诉你,你还有一次选择的机会。那么,请你考虑一下, 肔nl@捓?
你是坚持第一次的选择不变,还是改变第一次的选择,更有可能得到轿车?
using System;
namespace Probability
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Random random = new Random();
int count = 0, countc = 0;
double probability=0.0000;
for (int C = 1; C <= 1000000; C++) // 模仿实例1000000次
{
int car = random.Next(3); // 有车的房间号
int achecked = random.Next(3); // 选定的房间号
if (car == achecked) //如果选择不改变,选到有车的房间,记录一次
{
count++;
}
}
System.Console.WriteLine("选择不变,1000000次中选到有车的次数是:" + count + "次");
for (int CC = 1; CC <= 1000000; CC++) // 模仿实例1000000次
{
int car = random.Next(3); // 有车的房间号
int achecked = random.Next(3); // 选定的房间号
int del = random.Next(3); // 删除的房间号
while (del == car || del == achecked) //处理删除的房间号
{
del = random.Next(3);
}
int checkednew = random.Next(3); //重新选择房间号
while (del == checkednew || checkednew == achecked)
{
checkednew = random.Next(3);
}
if (car == checkednew) // 如果选择改变,选到有车的房间,记录一次
{
countc++;
}
}
probability = (double)countc/(double)count;
System.Console.WriteLine("选择改变,1000000次中选到有车的次数是:" + countc + "次");
System.Console.WriteLine("换:不换 :{0:F4}", probability);
System.Console.ReadLine();
}
}
}