算法之二项分布(php版)

本文解析了二项分布的概率计算方法,通过递归与非递归两种算法实现,详细展示了每一步操作流程,有助于理解二项分布的计算原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二项分布是数学的概念,定义及公式定理不在此说明.
注:递归版第三步及递推都依赖于C(M-1,N-1)+C(M-1,N)=C(M,N)的变形
递归版:
(我给递归版注释了1 2 3 是为了解析非递归版(递推版)中同等的操作
1 2 3)方便我们理解是怎么让递归变成递推的

function binomial($N,$k,$p)
    {
    // 1
        if($N < 0 || $k < 0)
            return 0.0;
    //2
        if($N == 0 && $k == 0)
            return 1.0;
    //3
        return (1.0 - $p) * binomial($N - 1,$k,$p) + $p * binomial($N - 1,$k - 1,$p);
    }

非递归版:

function binomial($N,$k,$p)
    {
        if ($N < 0 || $k < 0)
            return 0.0;
        //1
        $ret[0][0] = 1.0;
        //2
        for ($i = 1; $i < $N + 1; ++$i)
            $ret[$i][0] = (1.0 - $p) * $ret[$i - 1][0];
        for ($j = 1; $j < $k + 1; ++$j)
            $ret[0][$j] = 0.0;
        //3
        for ($i = 1; $i < $N + 1; ++$i)
            for ($j = 1; $j < $k + 1; ++$j)
                $ret[$i][$j] = (1.0 - $p) * $ret[$i - 1][$j] + $p * $ret[$i - 1][$j - 1];
            return $ret[$N][$k];
    }

运行:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值