我正在使用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/