首页 > 用户发贴区 > 编程问题提问区 > [题目]该不该换?概率问题!
2007
07-17

[题目]该不该换?概率问题!

一个概率题,编程验证一下!

你上台参加一个节目:
有三个箱子,其中一个装着宝贝,主持人知道宝贝藏在哪个箱子里。
让你猜宝贝藏在哪个箱子里,如果能猜中宝贝就是你的。
你只好随机选了一个。
这时主持人打开了另一个箱子,里面是空着的,然后问你:现在你可以选择另一个箱子,你换不换选择?

程序要求结构清晰,有注解和说明;


[题目]该不该换?概率问题!》有 1 条评论

  1. xstar 说:

    范例程序:
    [code]
    /////////////////////////////////////////////
    // 测试概率问题                            //
    // Code By XStar.WXB                       //
    // Date @  2007-07-20                      //
    /////////////////////////////////////////////
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char* argv[])
    {
     int arr[ 3 ]; // 3个箱子:0表示无宝贝,1表示有宝贝。
     int ipos;     // 指示哪个箱子里有宝贝。
     int upos;     // 选择了哪个箱子
     int i, j;     // 循环变量

     int iSum;     // 测试次数
     int iNum1;    // 选中次数
     int iNum2;    // 交换后选中次数

     iSum  = 10000;
     iNum1 = 0;
     iNum2 = 0;

     srand( time(NULL) );

     for( i = 0; i < iSum; i++ ) {
      // 初始化箱子
      for( j = 0; j < 3; j++ ) {
       arr[ j ] = 0;
      }
      // 随机放入宝贝
      ipos = rand() % 3;
      arr[ ipos ] = 1;

      // 随机选择宝贝
      upos = rand() % 3;

      // 统计选中次数
      iNum1 += arr[ upos ];

      // 统计交换后的选中次数。
      // 分析当前选择情况和交换后选择情况:
      // 1、如果交换前选中了,则主持人可以打开
      // 剩下的任何一个箱子,但交换后肯定选不中。
      // 2、如果交换前没选中,则主持人只能打开
      // 剩下的一个空箱子,交换后肯定能选中。

      // 如果交换前没选中
      if( ipos != upos ) {
       iNum2++;
      }
     } // for( i = 0; i < iSum; i++ )

     // 输出结果
     printf( "测试了 %d 次!\n交换前选中 %d 次!\n交换后选中 %d 次!\n",
      iSum, iNum1, iNum2 );

     return 0;
    }
    [/code]

留下一个回复