一个概率题,编程验证一下!
你上台参加一个节目:
有三个箱子,其中一个装着宝贝,主持人知道宝贝藏在哪个箱子里。
让你猜宝贝藏在哪个箱子里,如果能猜中宝贝就是你的。
你只好随机选了一个。
这时主持人打开了另一个箱子,里面是空着的,然后问你:现在你可以选择另一个箱子,你换不换选择?
程序要求结构清晰,有注解和说明;
>> 本文固定链接: http://www.vcgood.com/archives/1726
一个概率题,编程验证一下!
你上台参加一个节目:
有三个箱子,其中一个装着宝贝,主持人知道宝贝藏在哪个箱子里。
让你猜宝贝藏在哪个箱子里,如果能猜中宝贝就是你的。
你只好随机选了一个。
这时主持人打开了另一个箱子,里面是空着的,然后问你:现在你可以选择另一个箱子,你换不换选择?
程序要求结构清晰,有注解和说明;
>> 本文固定链接: http://www.vcgood.com/archives/1726
你必须先 登录才能发表评论。
范例程序:
[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]