二項分佈,binomial(n,k,p)
阿新 • • 發佈:2019-02-11
一、二項分佈,遞迴實現
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]; }