gpt4 book ai didi

java - 如何使用 Map 中的数据集在 Java 中计算 95 个百分位数

转载 作者:行者123 更新时间:2023-11-29 06:38:50 28 4
gpt4 key购买 nike

我正在尝试从我的 Java 数据集中计算 95% 百分位数。我的数据集会有这样的东西-

我将拥有一个 ConcurrentHashMap,它具有这样的键值对-

Key = 30
Value = 10

这意味着在 30 毫秒内有 10 个调用返回

另一个例子-

Key = 20
Value = 5

这意味着,5 个调用在 20 毫秒内返回

因此,根据上面的 map ,我试图用 Java 计算 95% 的百分位数。

任何人都可以提供任何示例,说明如何根据我上面的 map 在 Java 中执行此操作吗?感谢您的帮助

更新代码:-

下面是我得到的代码,它将根据 map 计算第 95 个百分位数-

/**
* A simple method to log 95th percentile information
*/
private static void logPercentileInfo() {

double total = 0;
for (Map.Entry<Long, Long> entry : CassandraTimer.histogram.entrySet()) {
long value = entry.getKey() * entry.getValue();
total += value;
}

double sum = 0.95*total;

double totalSum = 0;

SortedSet<Long> keys = new TreeSet<Long>(CassandraTimer.histogram.keySet());
for (long key : keys) {

totalSum += CassandraTimer.histogram.get(key);

if(totalSum >= sum) {
System.out.println(key);
}
}

}

谁能帮我看看我写的对不对?

最佳答案

算法是:对 map 中的所有值求和,计算总和的 95%,按升序迭代 map 键以保持值的运行总和,当总和等于或超过先前计算的总和的 95% 时,键应该是第 95 个百分位数。

关于java - 如何使用 Map 中的数据集在 Java 中计算 95 个百分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15714412/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com