【java语言实现泊松分布】

有两种方式实现

自己手写基于jdk底层math包

使用三方api

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

公式展示:P(k)=(λk)*(e-λ))/k!

F ( x , λ ) = ∑ k = 0 x e − λ λ k k ! F(x, \lambda) = \sum_{k = 0}^{x} \frac{e^{-\lambda} \lambda^{k}}{k !} F(x,λ)=k=0xk!eλλk

自己手写基于jdk底层math包

    /**
     * 泊松分布计算
     * 正函数:这是根据x算最终的概率
     * 反函数:反向算x就是使用whlie循环加x算得的概率于预期比较大于就代表x就是最终结果,
     * 注意事项: 如果x,lambda 很大超过double的最大范围计算就会出问题
     */
    @Test
    void test003() {
        Assertions.assertDoesNotThrow(() -> {
            int x = 10;
            double result = 0;
            double lambda = 7.5;
            for (int i = x; i > 0; i--) {
                // lambda 的i次方 
                double j = Math.pow(lambda, i);
                // e的-lambda次方
                double e = Math.exp(-lambda);
                // 累计阶乘
                double h = factorial(i);
                result += (j * e) / h;
            }
            System.out.println(result);
        });
    }
    /**
     * 累计阶乘
     */
    public double factorial(int n) {
        double result = 1;
        for (int i = 2; i <= n; i++) {
            result *= i;
        }
        return result;
    }

使用三方api

这里使用阿帕奇的工具包
1.加入依赖

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
            <version>3.6.1</version>
        </dependency>

2.使用

   /**
     * 1.使用很简单只需要创建对象然后给参数值就可以得到结果了,下面使用的是逆向计算,算x
     * 2. 底层采用的是,均值法和简单的二分法有兴趣可以去阅读一下源码对于公式的理解还是很有帮助的
     */
    @Test
    void test004() {
        Assertions.assertDoesNotThrow(() -> {
             // Poisson分布的参数
            double lambda = 411.5;
            // 要求的分位数概率值 
            double p = 0.95; 
            PoissonDistribution poisson = new PoissonDistribution(lambda);
            double x = poisson.inverseCumulativeProbability(p);
            System.out.println("The Poisson inverse function of p=" + p + " with lambda=" + lambda + " is " + x);
        });
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用Apache Commons Math库来计算泊松分布的累计分布概率。首先,你需要确保已经导入了Apache Commons Math库。然后,你可以使用`PoissonDistribution`类来计算泊松分布的累计分布概率。 下面是一个示例代码,展示了如何使用Java计算泊松分布的累计分布概率: ```java import org.apache.commons.math3.distribution.PoissonDistribution; public class Main { public static void main(String\[\] args) { // 设置泊松分布的参数 lambda double lambda = 2.5; // 创建泊松分布对象 PoissonDistribution poissonDistribution = new PoissonDistribution(lambda); // 计算累计分布概率 double cumulativeProbability = poissonDistribution.cumulativeProbability(3); // 打印结果 System.out.println("累计分布概率为: " + cumulativeProbability); } } ``` 在上面的代码中,我们首先设置了泊松分布的参数`lambda`,然后创建了一个`PoissonDistribution`对象。接下来,我们使用`cumulativeProbability`方法来计算累计分布概率,传入参数为要计算的值。最后,我们打印出计算得到的累计分布概率。 请注意,上述代码只是一个示例,你可以根据自己的需求进行修改和扩展。 #### 引用[.reference_title] - *1* *3* [泊松分布–计算概率分布的公式](https://blog.csdn.net/cumian8165/article/details/108098054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java中利用Math.random()产生服从泊松分布的随机数](https://blog.csdn.net/weixin_28944305/article/details/114077956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值