我正在使用Apache Math DescriptiveStatistics在称为ArrayList<double>scores上进行一些计算。 scores中的值之一在一个单独的double值中,该值称为myScore。如何使用Apache Math查找myScore的百分位数?

这是我的第一次尝试,但是它很麻烦,必须有一种更简单的方法:

int percentile = 0;
DescriptiveStatistics stats = new DescriptiveStatistics();
double[] values = getValues(scores, minval, maxval);
// Add the data from the array
for( int i = 0; i < values.length; i++) {
    stats.addValue(values[i]);
}
for(int j=0; j<101; j++){
    if(stats.getPercentile(j)>myScore && stats.getPercentile<myScore){
        percentile = j;
    }
}

最佳答案

我看不到解决问题的专用方法,但是可以使用Arrays.binarySearch分两步来解决:

int pos = Arrays.binarySearch(stats.getSortedValues(), myScore);
double percentile = (pos < 0 ? -1 - pos : pos) * 100.0 / stats.getN();


它应该比您当前的解决方案更有效。

关于java - 使用apache数学获得分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31712380/

10-13 05:50