您能否建议任何简单的Java统计信息包?
我不一定需要任何高级的东西。令我惊讶的是,似乎没有函数可以计算java.lang.Math
包装中的平均值...
你们用来做什么?
编辑
关于:
编写一个简单的类来计算均值和标准差有多难?
好吧,不难。我只在手工编码后才问这个问题。但这只是令我沮丧的是,在我需要这些最简单的功能时,他们没有手头可用。我不记得用心计算stdev的公式:)
Answers:
double
不使用int
,long
所以整数溢出不是问题。但是,它们不能处理多于Integer.MAX_VALUE
两倍的值集。
从Java SE 8开始,已经向该平台添加了许多类:
只需回答问题的这一部分:
我很惊讶在java.lang.Math包中似乎没有函数来计算均值...
我不觉得惊讶于此。Java类库没有实现许多“有用的算法”。他们并没有实现所有事情。而且,它们与其他编程语言没有区别。
实际上,如果Sun确实尝试在J2SE中实现太多,那将是一件坏事:
如果没有明确的“投资回报率”,这将需要更多的设计师/开发商/技术文档编制者时间。
它将增加Java占用空间;例如“ rt.jar”的大小。(或者,如果他们试图减轻这种情况,将会导致更多的平台复杂性...)
对于数学领域中的事物,您通常需要以不同的方式(使用不同的API)实现算法,以满足不同的需求。
对于复杂的事情,Sun最好不要尝试“标准化” API,而应由其他有兴趣的技术人员来完成;例如Apache的人。
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);
}
}
我认为Java中没有直接的方法和类。我们必须为我们自己构建它。根据您的要求,此代码将为您提供帮助。用Java计算标准偏差