练习链接: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”中的每个数字中减去先前计算的平均值,并将新值放入变量中“区别”。有一个完美的感觉。
差异* =差异;
我们现在将变量“差异”中的每个数字相乘。再次,一个接一个。有道理。
这是我迷路的地方......
sumDiffSquared + =差异
这对我来说毫无意义。为什么/如何将这些值相加?对我而言,变量“sumDiffSquared”的值看起来像是0,所以这只是为变量“差异”中的每个值加0 ......
答案 0 :(得分:0)
变量sumDiffSquared
不会为每个循环重置,因此它会为每个循环累积difference
的值。