Java编程二项分布的递归和非递归实现代码实例-创新互联

本文研究的主要内容是Java编程二项分布的递归和非递归实现,具体如下。

成都创新互联公司网站建设服务商,为中小企业提供网站设计制作、网站设计服务,网站设计,网站托管等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出成都创新互联公司

问题来源:


算法第四版 第1.1节 习题27:return (1.0 - p) * binomial(N - 1, k, p) + p * binomial(N - 1, k - 1, p);
计算递归调用次数,这里的递归式是怎么来的?


二项分布:

定义:n个独立的是/非试验中成功次数k的离散概率分布,每次实验成功的概率为p,记作B(n,p,k)。


概率公式:P(ξ=K)= C(n,k) * p^k * (1-p)^(n-k)


其中C(n, k) = (n-k) !/(k! * (n-k)!),记作ξ~B(n,p),期望:Eξ=np,方差:Dξ=npq,其中q=1-p。


概率统计里有一条递归公式:

这个便是题目中递归式的来源。


该递推公式来自:C(n,k)=C(n-1,k)+C(n-1,k-1)。实际场景是从n个人选k个,有多少种组合?将着n个人按1~n的顺序排好,假设第k个人没被选中,则需要从剩下的n-1个人中选k个;第k个选中了,则需要从剩下的n-1个人中选k-1个。


书中二项分布的递归实现:

public static double binomial(int N, int k, double p) { 
    COUNT++; //记录递归调用次数 
    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); 
  } 

标题名称:Java编程二项分布的递归和非递归实现代码实例-创新互联
当前链接:http://bzwzjz.com/article/djscio.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 专业网站设计 公司网站建设 四川成都网站建设 古蔺网站建设 成都网站建设推广 重庆手机网站建设 成都网站设计 网站建设方案 成都h5网站建设 上市集团网站建设 定制网站制作 网站建设推广 成都网站制作 成都网站建设 企业网站建设 成都网站建设 H5网站制作 温江网站设计 营销网站建设 成都网站设计 重庆网站建设 成都网站设计