我有一个数字数组,需要计算其标准差。我想在单个 for
循环中完成此操作,但我事先不知道数组的平均值:
int[] numbers = new int[] {1, 2, 3, 5};
int sum = 0;
double sumOfSquares = 0;
for (int number: numbers) {
sum += number;
sumOfSquares += number * number; //don't know average yet
}
int average = sum / numbers.length;
double standardDeviation = //?
我知道标准偏差可以通过以下公式计算:
Formula1: sqrt((each element - average)^2)
但它要求我在循环数组中的元素时已经知道平均值的值。
还有其他方法吗?我听说还有另一个公式,首先需要找到每个元素的平方和,然后一旦循环结束应用平均值,但我找不到它。
最佳答案
根据Wikipedia如果值的数量是有限的并且具有相同的概率,那么您可以使用只需要一个循环的公式,这里似乎就是这种情况。
int[] numbers = new int[] {1, 2, 3, 5};
double squareSum = 0;
double sum = 0;
for (int value : numbers) {
squareSum += value * value;
sum += value;
}
double average = sum / numbers.length;
double standDev = Math.sqrt(squareSum / numbers.length - average * average);
关于java - 在一个 for 循环中计算整数数组的标准差,而无需提前知道平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61453921/