根据方差公式 (其中m为数组均值),可以推出s^2= E(x^2) -(E(x))^2
所以可以通过一次遍历求数组方差
#include <iostream>
using namespace std;
double variance(double x[], int n) {
double s1 = 0, s2 = 0;
for(int i = 0; i < n; i++) {
s1 += x[i]*x[i];
s2 += x[i];
}
double quare = s1/n - (s2/n) * (s2/n);
return quare;
}
int main() {
double x[] = {4,4,5,5};
double var = variance(x, 4);
cout << "The variance of the array is: " << var << endl;
return 0;
}