当前位置 :
【某个袋子中有红球m个,白球n个.现在要从中取出x个球.那么红球数目多于白球的概率是多少呢?请问你给的答案的数学原理是什么呢,概率为什么那么求啊,】
1人问答
问题描述:

某个袋子中有红球m个,白球n个.现在要从中取出x个球.那么红球数目多于白球的概率是多少呢?

请问你给的答案的数学原理是什么呢,概率为什么那么求啊,

蔡俊华回答:
  c语言实现:下面的代码解决了这个问题.其中的y表示红球至少出现的次数.   这与前文的问题是等价的.因为如果取30个球,要求红球数大于白球数,则等价于至少取出16个红球.请根据仅存的线索,判断程序逻辑,并补全缺少的代码.   /*   m:袋中红球的数目   n:袋中白球的数目   x:需要取出的数目   y:红球至少出现的次数   */   doublepro(intm,intn,intx,inty)   {   if(y>x)return0;   if(y==0)return1;   if(y>m)return0;   if(x-n>y)return1;   doublep1=____p1=pro(m-1,n,x-1,y-1);____   doublep2=____p2=pro(m,n-1,x-1,y);____   return(double)m/(m+n)*p1+(double)n/(m+n)*p2;   }   其实:我利用了递归的思想.   假设第一次我摸到1个红球,那么以后我至少需要摸出x-1个球(红球至少出现y-1次),而白球依然不变是n个.   但是如果我这次摸到的是白球,那么以后我至少还需摸出y个红球才能保证最终红球多于白球,其他同上.   下面就是终止条件:   if(y>x)return0;应该没问题吧,如果要求红球比摸出的所有球都多,怎么可能!所以没有这种情况,返回0;   if(y==0)return1;判断还需摸出0个红球,满足条件,返回1;   if(y>m)return0;这也没问题!   if(x-n>y)return1;即使所有白球都被摸到,但还需摸出x-n个球(>y),只能全是红球.满足.   最难懂的就是结尾:return(double)m/(m+n)*p1+(double)n/(m+n)*p2;   这是函数返回给调用函数的值,利用了分步相乘的思想:左边表示此次抽到红球的概率*以后满足条件的概率;右边表示P(此次抽到白球)*P(以后满足条件);这种递归直到算到最后直接用到判断条件为止.
数学推荐
最新更新
优秀数学推荐
PC端 | 移动端 | mip端
字典翻译(zidianfy.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
电话:  邮箱:
Copyright©2009-2021 字典翻译 zidianfy.com 版权所有 闽ICP备2022014709号-7
lyric 頭條新聞