如何计算C+中的方差、中值和标准差+;还是Java?
可能重复:如何计算C+中的方差、中值和标准差+;还是Java?,java,c++,math,Java,C++,Math,可能重复: 我有一个双精度向量(1.1,2,3,5)。如何计算方差、中值和标准差 java或C++,甚至伪代码都可以。< p>计算平均值,通过列表/数组的循环,跟踪部分和和长度。然后返回总和/长度 double sum = 0.0; int length = 0; for( double number : numbers ) { sum += number; length++; } return sum/length; 方差的计算方法类似。标准偏差只是方差的平方根: d
我有一个双精度向量(1.1,2,3,5)。如何计算方差、中值和标准差
java或C++,甚至伪代码都可以。
< p>计算平均值,通过列表/数组的循环,跟踪部分和和长度。然后返回总和/长度
double sum = 0.0;
int length = 0;
for( double number : numbers ) {
sum += number;
length++;
}
return sum/length;
方差的计算方法类似。标准偏差只是方差的平方根:
double stddev = Math.sqrt( variance );
为什么中位数不能像其他一样处理数据?@JW8:不,这不是一个很好的实现示例。为什么
size
的类型是double
?median()
的实现也很糟糕。他复制和排序整个数据结构,只是为了找到中间值:/。您应该使用选择算法,例如quickselect@fireboot请随意提供上述实现。我尽量保持简单。这个实现的一个问题是,如果您想要全部三个,您将对数据进行三次传递。我尝试了这个方法,得到的结果与WolframAlpha输出不匹配。平均值是正确的,但方差不是。我在计算时使用了data.length-1
而不是size
来获得正确的结果,这些算法可以根据它们的定义轻松实现:--也许我只是不理解这个问题,但如果您按照这些文章中的说明进行操作,您应该会很好。[已经为Java回答了][1][1]当前位置你应该始终表现出你在回答问题时的真诚努力。对于[家庭作业]
问题尤其如此!请再努力一点!。如果内存可用,则标准偏差为方差的平方根<代码>标准::第n个元素可以找到中间值。对于平均使用std::acculate
和where.size()
这不应标记为重复。这个问题需要代码。“复制”问题需要一个图书馆。。。
public class Statistics {
double[] data;
int size;
public Statistics(double[] data) {
this.data = data;
size = data.length;
}
double getMean() {
double sum = 0.0;
for(double a : data)
sum += a;
return sum/size;
}
double getVariance() {
double mean = getMean();
double temp = 0;
for(double a :data)
temp += (a-mean)*(a-mean);
return temp/(size-1);
}
double getStdDev() {
return Math.sqrt(getVariance());
}
public double median() {
Arrays.sort(data);
if (data.length % 2 == 0)
return (data[(data.length / 2) - 1] + data[data.length / 2]) / 2.0;
return data[data.length / 2];
}
}