日期:2014-05-20  浏览次数:20708 次

有关于概率、排列两题
1.袋中有红球m,白球n个。现在取出x个球,那么红球数目多于白球的概率是多少?
 m:袋中红球的数目;
 n:袋中白球的数目;
 x:需要取出的数目;
 y:红球至少出现的次数;
public static double pro(int m,int n,int x,int y){
if(y>x) return 0;
if(y==0) return 1;
if(y>m) return 0;
if(x-n>y) return 1;
double p1 = _______;
double p2 = _______;
return (double)m/(m+n)*p1 + (double)n/(m+n)*p2;
}


2.计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。
但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。
下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题

public static int f(int m, int n)
{
if(m==0 || n==0) return 1;
return __________;
}
答案是:return f(m-1,n-1)*(m+n)*(m+n-1)/(m*n);不懂,谁帮我解释一下。



------解决方案--------------------
第二个问题: 其实直接用数学方法就是(m+n)!/(m!n!) ; = (m+n-2)(m+n)(m+n)/(m-1)!(n-1)!mn;
= f(m-1,n-1)*(m+n)*(m+n-1)/(m*n); 我感觉结合具体的试题环境 是为了考察递归函数,所以才多此一举!
------解决方案--------------------
qq之