二项分布,binomial(n,k,p)
程序员文章站
2022-06-02 20:29:59
...
一、二项分布,递归实现
public static double binomial(int N, int k, double p){
if(N==0 && k==0) return 1.0;
if(N < 0 || k < 0) return 0.0;
return (1.0 - p) * binomial(N-1, k, p) + p * binomial(N-1, k-1, p);
}
解释:
缺点:递归调用,没有保存已经计算过的值,导致很费时间
二、二项分布,非递归实现。将已经计算过的值保存在数组中并给出一个更好的实现
public static double bin(int N, int k, double p){
double [][] b = new double[N+1][k+1];
b[0][0] = 1;
for(int i=1; i<=N; i++)
b[i][0] = (1.0 - p) * b[i-1][0];
for(int i=1; i<=N; i++){
for(int j=1; j<=k; j++){
b[i][j] = (1.0 - p) * b[i-1][j] + p * b[i-1][j-1];
}
}
return b[N][k];
}
上一篇: 打印队列 UVA 12100
下一篇: 二项堆Binomial Queues
推荐阅读