简单统计-用于计算平均值、标准偏差等的Java包

简单统计-用于计算平均值、标准偏差等的Java包,java,math,statistics,packages,Java,Math,Statistics,Packages,你能推荐一些简单的Java统计软件包吗 我不一定需要任何先进的东西。我很惊讶,java.lang.Math包中似乎没有计算平均值的函数 你们用什么做这个 编辑 关于: 编写一个简单的类有多难 这是计算方法和标准的 偏差 嗯,不难。我只是在手工编码后才问这个问题。但当我需要这些最简单的函数时,手头却没有这些函数,这只会让我更加沮丧。我不记得背诵计算stdev的公式:),特别是。只是回答了这部分问题: 我很惊讶有这么多人 似乎不是一个功能 计算表中的平均值 java.lang.Math包 我想我发

你能推荐一些简单的Java统计软件包吗

我不一定需要任何先进的东西。我很惊讶,
java.lang.Math
包中似乎没有计算平均值的函数

你们用什么做这个


编辑

关于:

编写一个简单的类有多难 这是计算方法和标准的 偏差


嗯,不难。我只是在手工编码后才问这个问题。但当我需要这些最简单的函数时,手头却没有这些函数,这只会让我更加沮丧。我不记得背诵计算stdev的公式:)

,特别是。

只是回答了这部分问题:

我很惊讶有这么多人 似乎不是一个功能 计算表中的平均值 java.lang.Math包

我想我发现这一点并不感到惊讶。Java类库没有实现很多“有用的算法”。他们并不是什么都能实现。在这方面,它们与其他编程语言没有什么不同

实际上,如果Sun试图在J2SE中实现太多,那将是一件坏事:

  • 这将需要更多的设计师/开发人员/技术文档编制人员时间。。。没有明确的“投资回报”

  • 这将增加Java的占用空间;e、 g.“rt.jar”的大小。(或者,如果他们试图缓解这种情况,将导致更大的平台复杂性…)

  • 对于数学空间中的事物,通常需要以不同的方式(使用不同的API)实现算法,以满足不同的需求

  • 对于复杂的事情,Sun最好不要尝试“标准化”API,而是让其他感兴趣/熟练的团队来做;e、 阿帕奇人


  • 我认为java中没有直接的方法和类。我们必须为自己建造它。对于您的需求,此代码将帮助您

    自Java SE 8以来,平台中添加了许多类:


    谢谢。我认为没有理由再看下去了。您对ApacheCommons感到满意,还是仅仅如此,足够好,可能更好?刚刚发现了这个库,精确地用于计算平均值、标准偏差。很容易学会+1 API使用
    double
    not
    int
    long
    ,因此整数溢出不是问题。但是,他们无法处理大于
    整数的值集。MAX_value
    双倍。@MasterPeter-但我相信你会记住Wikipedia的URL:-):-)只是为了省去人们的点击次数:DescriptiveStatistics是一种将你发送的所有值保存在内存中的方法,而汇总统计数据并不能将它们保存在记忆中。这是在约翰·保雷特的回答后两年回答的。显然,有一些图书馆可以做这件事。除非出于教育目的,否则我不会实现你自己的。你不应该把它记在心里。任何有价值的语言都应该能够直接获得基本的描述性统计数据。看到有人问“编写标准偏差有多难”函数很有趣……很好,但它没有提供getStd(),这很糟糕。我不明白为什么计算偏差的方法没有添加到IntSummaryStatistics中。
    import java.util.*;
    public class stdevClass {
        public static void main(String[] args){
            int [] list = {1,-2,4,-4,9,-6,16,-8,25,-10};
            double stdev_Result = stdev(list);
            System.out.println(stdev(list));
        }
    
        public static double stdev(int[] list){
            double sum = 0.0;
            double mean = 0.0;
            double num=0.0;
            double numi = 0.0;
            double deno = 0.0;
    
            for (int i : list) {
                sum+=i;
            }
            mean = sum/list.length;
    
            for (int i : list) {
                numi = Math.pow((double) i - mean), 2);
                num+=numi;
            }
    
            return Math.sqrt(num/list.length);
        }
    }