使用 apache 数学获取分数的百分位数

get percentile for a score using apache math

我正在使用 Apache Math DescriptiveStatistics 对名为 scoresArrayList<double> 进行一些计算。 scores 中的一个值位于另一个名为 myScoredouble 值中。如何使用 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();

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