从长数组中计算百分位数?
2022-09-04 00:43:44
给定一长串以毫秒为单位的延迟,我想从中计算百分位数。我得到了以下方法,这能完成工作,但我不确定如何验证这是否能给我准确的结果?
public static long[] percentiles(long[] latencies, double... percentiles) {
Arrays.sort(latencies, 0, latencies.length);
long[] values = new long[percentiles.length];
for (int i = 0; i < percentiles.length; i++) {
int index = (int) (percentiles[i] * latencies.length);
values[i] = latencies[index];
}
return values;
}
我想从数组中获得第 50、95、99 和 99.9 百分位。latencies
long[] percs = percentiles(latencies, 0.5, 0.95, 0.99, 0.999);
这是在给定长延迟阵列的情况下获得百分位数的正确方法吗?我正在使用Java 7。