一个概率题,编程验证一下!
你上台参加一个节目:
有三个箱子,其中一个装着宝贝,主持人知道宝贝藏在哪个箱子里。
让你猜宝贝藏在哪个箱子里,如果能猜中宝贝就是你的。
你只好随机选了一个。
这时主持人打开了另一个箱子,里面是空着的,然后问你:现在你可以选择另一个箱子,你换不换选择?
程序要求结构清晰,有注解和说明;
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能
范例程序:
[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]