这是我到目前为止。我无法获得正确的方差。
variance += ((numbers[i] - (double)mean) * (numbers[i] - (double)mean));
variance /= (double)size;
cout << "The variance is: " << variance << endl;
Run Code Online (Sandbox Code Playgroud)
您的代码存在多个问题,所有这些问题都会导致差异错误。
您正在计算循环中的方差,同时更新每次迭代的均值(在获得正确均值之前)。虽然这将导致在mean循环结束时将正确的均值存储在变量中,但在除最后一次迭代之外的所有时间中,方差的计算均值不正确。在开始从数组中减去它以计算方差之前,您需要所有数字的平均值。解决方案将是在原始循环之后计算方差的另一个循环,此时您已经拥有正确的平均值。
数组索引从 0 开始,但从 1 开始,这意味着数组中的第一个数字将始终为 0,并且您正在计算 9 个数字而不是 10 个数字的均值和方差,但要除以 10。
Mean 是一个整数,但用于存储浮点(或双精度)数。此外,total / size由于它们都是整数,因此将向下舍入,因此您应该将其中之一转换为双倍。