package com.whyc.util;
|
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
public class MathUtil {
|
|
public static float getStandardDeviation(List<Float> list){
|
//求平均值
|
float avg = list.stream().collect(Collectors.averagingDouble(Float::floatValue)).floatValue();
|
|
//求方差
|
//相减,平方,累加
|
float subSquareTotal = 0.0f;
|
for (Float item : list) {
|
subSquareTotal += (item -avg)*(item -avg);
|
}
|
Float s = subSquareTotal/list.size();
|
//标准差
|
double σ = Math.sqrt(s.doubleValue());
|
return BigDecimal.valueOf(σ).setScale(4, RoundingMode.HALF_UP).floatValue();
|
}
|
|
public static void main(String[] args) {
|
Float[] f = {3.54f,3.55f,3.55f,3.56f,3.57f,3.56f,3.58f,3.58f,3.56f};
|
Float[] f2 = {3.53f,3.55f,3.56f,3.57f,3.59f,3.58f,3.6f,3.6f,3.61f};
|
Float standardDeviation = getStandardDeviation(Arrays.asList(f));
|
Float standardDeviation2 = getStandardDeviation(Arrays.asList(f2));
|
System.out.println(standardDeviation);
|
System.out.println(standardDeviation2);
|
}
|
}
|