欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二项分布,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);
		
	}

解释:

二项分布,binomial(n,k,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];
	}