美文网首页
二项分布概率算法

二项分布概率算法

作者: AmaAnchor | 来源:发表于2019-04-03 21:37 被阅读0次

二项分布是一种伯努利试验。即实验结果只有两个,且互为对立事件。

解决类似问题:做一件事N次,成功的概率为p,问成功K次的概率为多少?

使用分治思想,假设前N-1次已经知道实验结果,现在只要求出第N次实验的概率即可。
所以可以使用递归的算法

public static double binomial(int n,int k,double p){
        if(n==0 && k==0)
            return 1;
        if(n<0||k<0)
            return 0;
        return p*binomial(n-1,k-1,p) +(1-p)*binomial(n-1,k,p);
    }

然而这样速度太慢,有什么办法能代替递归呢?
看看递归在这里起了什么作用。递归存储了每一种情况的概率。现在用数组来代替递归实现。

用a[N][K]表示N次事件发生K次的概率

这里我决定逐层往上地求出a[N][K],
所需要的最低层的概率就是a[i][0]和a[0][j] (i∈[0,N],j∈[0,K])
而根据实际情况,a[0][j]的概率必为0(事件总数为0,概率肯定为零)
故而只要初始化a[i][0]的的概率即可

for(int i=0;i<=n;++i){
            a[i][0]=Math.pow(1-p,i);
        }

完整代码为:

public static double binomialNonRecursion(int n,int k,double p){
        double[][] a=new double[n+1][k+1];
        for(int i=0;i<=n;++i){
            a[i][0]=Math.pow(1-p,i);
        }
        for(int i=1;i<=n;++i){
            for(int j=1;j<=k;++j){
                a[i][j]=p*a[i-1][j-1]+(1-p)*a[i-1][j];
            }
        }
        return a[n][k];
    }

相关文章

  • 二项分布概率算法

    二项分布是一种伯努利试验。即实验结果只有两个,且互为对立事件。 解决类似问题:做一件事N次,成功的概率为p,问成功...

  • 学习笔记|程序员的数学:概率统计#3

    3.离散值的概率分布 3.1 一些简单的例子 pass 3.2 二项分布 3.2.1 二项分布的推导 二项分布概率...

  • 第一章 算法基础——概率论与数理统计基础

    1.3 概率论与数理统计基础 算法常涉及数据分布情况,而这些分布又与概率紧密相连,常见的分布方式包括二项分布、超几...

  • 2019-04-07

    常见概率分布 离散型 1.二项分布Binomial distribution:binom 2.负二项分布negat...

  • 【R】二项分布函数

    二项分布函数 二项分布指的是:N重伯努利实验,记为 parameterdescriptionx数字的向量p概率向量...

  • 统计学基础

    概念: 随机变量,连续型变量,概率密度函数,边缘概率,条件概率,期望,方差,协方差,二项分布 http://blo...

  • 如何在Python中实现五类强大的概率分布

    五类概率分布 二项分布(Binomial Distribution) 泊松分布(Poisson Distribut...

  • 概率分布

    几个重要的概率分布 离散型概率分布:二项分布,泊松分布,超几何分布 连续型概率分布:正态分布 由正态分布导出的几个...

  • 木东居士学习计划:第三周 数据分布(详实版)

    基本概念古典概率条件概率离散分布连续变量期望值 离散变量的概率分布二项分布伯努利分布泊松分布 连续变量的概率分布均...

  • 概率论公式笔记

    全概率公式:,其中组成了一个完备事件集; 全概率公式:,其中和是边缘概率密度; 组合数公式:由得出; 二项分布求和...

网友评论

      本文标题:二项分布概率算法

      本文链接:https://www.haomeiwen.com/subject/mylzbqtx.html