假设你在进行一个游戏节目。现给三扇门供你选择:一扇门后面是一辆轿车,另两 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();
  }
 }
}

posted on 2006-08-12 10:49  microshot  阅读(1397)  评论(25编辑  收藏  举报