让程序来猜猜那个传说中经典的概率题

本文通过一个游戏节目的例子,探讨了著名的蒙提霍尔问题,并使用Java编程进行了模拟实验,结果显示更换选择能显著提高胜率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目如下;:

假设你在进行一个游戏节目。现给三扇门供你选择:一扇门后面是一辆轿车,另两
扇门后面分别都是一头山羊。你的目的当然是要想得到比较值钱的轿车,但你却并
不能看到门后面的真实情况。主持人先让你作第一次选择。在你选择了一扇门后,
知道其余两扇门后面是什么的主持人,打开了另一扇门给你看,而且,当然,那里
有一头山羊。现在主持人告诉你,你还有一次选择的机会。那么,请你考虑一下,
你是坚持第一次的选择不变,还是改变第一次的选择,更有可能得到轿车?

《广场杂志》刊登出这个题目后,竟引起全美大学生的举国辩论,许多大学的教授
们也参与了进来。真可谓盛况空前。据《纽约时报》报道,这个问题也在中央情报
局的办公室内和波斯湾飞机驾驶员的营房里引起了争论,它还被麻省理工学院的数
学家们和新墨哥州洛斯阿拉莫斯实验室的计算机程序员们进行过分析。

现在,请你来回答一下这个问题。

用java写的程序.

import java.util.*;
public class  Check

{
  public static void main(String []args)
  {
      //0车 1羊1 2羊2
      ArrayList arrayListc=new ArrayList(1000000);
    ArrayList arrayListn=new ArrayList(1000000);
  Check check=new Check();
      for(int i=0;i<1000000; i++)
      {
      int iFirst=check.getFirstCheck();
      int iComp=check.getCompCheck(iFirst);
      int ic=    check.getChangedCheck(iFirst,iComp);
      if(ic==0) arrayListc.add(new Integer(ic));
      int in=check.getNoChangeCheck(iFirst);
      if(in==0) arrayListn.add(new Integer(in));
      }
      System.out.println("no change"+arrayListn.size());
    System.out.println("change   "+arrayListc.size());
  }
  //获得0-i之间的数
  public int getNumber(int i)
  {
      return new Random().nextInt(i);
  }
  //第一次选择
  public int getFirstCheck()
  {
      int i=getNumber(3);
     return i;
  }
  //主持人选择
  public int getCompCheck(int i)
  {
      if(i==0)
      return getNumber(2)+1;
      else if(i==1)
      return 2;
      else
      return 1;
  }
  //如果换第一次选择
  public int getChangedCheck(int iFirst,int iComp)
  {
      return 3-iFirst-iComp;
  }
  //不换第一次的选择
  public int getNoChangeCheck(int iFirst)
  {
    return iFirst;   
  }
}


程序执行5次的结果如下
no change333587
change   666413

no change332892
change   667108

no change333028
change   666972

no change331889
change   668111

no change333206
change   666794

嘿嘿所以说换还是比较明智的...



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值