看公式,可以推断出计算标准差分为几步:计算平均值u=(x1+x2+...+xn)/n
计算方差s²=((x1-u)^2 +(x2-u)^2 +...+(xn-u)^2)/n
计算标准差σ=sqrt(s²)/**
* 求平均值
*/double average(double *x, int len){ double sum = 0; for (int i = 0; i
sum += x[i]; return sum/len; // 得到平均值}/**
* 求方差
*/double variance(double *x, int len){ double average = average(x, len); for (int i = 0; i
sum += pow(x[i] - average, 2); return sum/len; // 得到平均值}/**
* 求标准差
*/double average(double *x, int len){ double variance = variance(x, len); return sqrt(variance); // 得到标准差}
最后,注意double *x在使用后的释放问题,遵循"谁申请谁释放"(new[]/delete[])原则if(NULL != x)
{ delete[] x;
x = NULL;
}
作者:ThinkinLiu
链接:https://www.jianshu.com/p/dc5cb1346d7d