代码之家  ›  专栏  ›  技术社区  ›  Peter Perháč

简单统计-用于计算平均值、标准差等的Java软件包[关闭]

  •  64
  • Peter Perháč  · 技术社区  · 15 年前

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

    我不需要任何先进的东西。我很惊讶,似乎没有一个函数来计算 java.lang.Math 包裹。。。

    你们用什么做这个?


    编辑

    关于:

    写一个简单的班级有多难 计算平均值和标准 偏差?

    嗯,不难。我只是在手工编码后才问这个问题。但它只增加了我的Java挫折感,而不是在我需要它们的时候有这些最简单的功能。我不记得用心脏计算stdev的公式:)

    5 回复  |  直到 8 年前
        1
  •  77
  •   sladstaetter    11 年前
        2
  •  20
  •   Peter Perháč    10 年前
        3
  •  18
  •   Stephen C    15 年前

    只是回答问题的这一部分:

    我很惊讶 似乎不是 计算中的平均值 java.lang.math包…

    我觉得我发现这个并不惊讶。Java类库没有实现很多有用的算法。它们并不实现所有的功能。在这方面,它们与其他编程语言没有什么不同。

    实际上,如果Sun尝试在J2SE中实现太多,那将是一件糟糕的事情:

    1. 这将需要更多的设计师/开发人员/技术资料员时间…没有明确的“投资回报”。

    2. 它会增加Java的占用率,例如“RT.jar”的大小。(或者,如果他们试图减轻这一点,将导致更多的平台复杂性…)

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

    4. 对于复杂的事情,Sun最好不要尝试“标准化”API,而是将其留给其他感兴趣/熟练的团队来完成,例如Apache人员。

        4
  •  6
  •   Belphegor Mister Smith    8 年前
    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);
        }
    }
    
        5
  •  1
  •   user889392    14 年前

    我认为Java中没有直接的方法和类。我们必须自己建造。对于您的要求,此代码将帮助您。 Calculate Standard Deviation in java