繁体   English   中英

Java - 找到差异 - 这会起作用吗?

[英]Java - finding the variance - would this work?

练习链接:mooc.cs.helsinki.fi/programming-part1/material-2013/week-3?noredirect=1#e67

这行得通吗? 我觉得我的数学是正确的,但我无法测试我的代码,因为我在工作。


和:

int a = 0;
int sum = 0;

while (a < list.size()) {
sum += list.get(a);
a++;
}
return sum;

平均数:

double average = sum(list)/list.size();

return average;

方差:

int a = 0;
double b = list.get(a) - average(list);
double sum = 0;

while (a < list.size()) {
sum += Math.pow(b, 2);
a++;
}
double variance = sum / (list.size() - 1);
return variance;

那行得通吗?

跟进问题:

这显然是做到这一点的“正确”方法......

double sumDiffSquared = 0.0;
double avg = average(list);

for (int value : list) {
double difference = value - avg;
difference *= difference;
sumDiffSquared += difference;
double variance = difference / (list.size() - 1);
}
return variance;

好吧,我想我明白了大部分(下面的注释)......

双差 = 价值 - 平均值;

“list”中的所有内容都放入变量“value”中,现在我们从变量“value”中的每个数字中减去先前计算的平均值,并将新值放入变量“difference”中。 很有道理。

差异*=差异;

我们现在将变量“difference”中的每个数字乘以自身。 再一次,一对一。 说得通。

这就是我迷路的地方...

sumDiffSquared += 差

这对我来说毫无意义。 为什么/如何将这些值加在一起? 对我来说,变量“sumDiffSquared”的值似乎是 0,所以这只是将 0 添加到变量“difference”中的每个值...

变量sumDiffSquared不会为每个循环重置,因此它正在累积每个循环的difference值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM