Java - 找到差异 - 这会有效吗?

时间:2016-03-08 21:55:59

标签: java variance

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

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

SUM:

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”中的每个数字中减去先前计算的平均值,并将新值放入变量中“区别”。有一个完美的感觉。

差异* =差异;

我们现在将变量“差异”中的每个数字相乘。再次,一个接一个。有道理。

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

sumDiffSquared + =差异

这对我来说毫无意义。为什么/如何将这些值相加?对我而言,变量“sumDiffSquared”的值看起来像是0,所以这只是为变量“差异”中的每个值加0 ......

1 个答案:

答案 0 :(得分:0)

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