玛丽莲小姐问题

桌面上有三个盒子,其中一个里面有手机,而另外两个是空的.主持人首先让你选择一个,然后她去打开剩下的一个空的盒子,然后他问你要不要和最后剩下的那个盒子交换,请写个程序证明是换好还是不换好!

答案是换。   
当主持人去掉一个错误答案后, 如果不换,那么开始选对就选对了,没选对就没选对,主持人的行为对你没有任何影响,所以选对的概率是 1/3 如果换,那么如果开始选对,现在就错了,如果开始选错,现在就对了。也就是说,如果开始选错了,那么结果就能选对。因为空盒子有 2 个,选错的概率是 2/3 ,也就是说,最后选对的概率是 2/3  

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     int   i,b,c;  
  6.     int   a[3];  
  7.     int   change=0;  
  8.     int   nochange=0;  
  9.     for(i=0;i<1000000;i++)  
  10.     {  
  11.         a[0]=0;  
  12.         a[1]=0;  
  13.         a[2]=0;  
  14.         a[int(rand()%3)]=1;                                 //一个手机  
  15.         b=int(rand()%3);                                       //选择的一个  
  16.         while(1)  
  17.         {
  18.             c=int(rand()%3);  
  19.             if(c!=b&&a[c]==0)                               //主持人打开一个空的  
  20.                 break;  
  21.         }  
  22.         if(a[b]==1)   nochange++;                           //不换  
  23.         else change++;
  24.     }  
  25.     printf("change:%d/n",change);  
  26.     printf("nochange:%d/n",nochange);   
  27.     return 0;
  28. }
文章参考 http://blog.csdn.net/tvtvtvtv/archive/2006/11/22/1404642.aspx



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值