d0r*_*ife 4 java statistics performance java-8
我很好奇我的标准偏差方法是否可以更有效。高效是指快速,快速是指从方法调用到方法返回的延迟。
这是代码:
public double stdDev(ArrayList<Double> input) {
double Nrecip = ( 1.0 / ( input.size()) );
double sum = 0.0;
double average = 0.0;
for (Double input : inputs) {
average += input;
} average *= Nrecip;
for (Double input : inputs) {
sum += ( (input - average)*(input - average) );
} sum *= Nrecip;
return Math.sqrt(sum);
}
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何建议。
您可以一次计算标准偏差。使用 adouble[]也会更有效。
public static double stdDev(double... a) {
double sum = 0;
double sq_sum = 0;
for (int i = 0; i < n; ++i) {
double ai = a[i];
sum += ai;
sq_sum += ai * ai;
}
double mean = sum / n;
double variance = sq_sum / n - mean * mean;
return Math.sqrt(variance);
}
Run Code Online (Sandbox Code Playgroud)
这是此解决方案在 C 中的转换
传递一次内存可以提高性能。
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |