gpt4 book ai didi

java - Java中如何计算百分位数?

转载 作者:行者123 更新时间:2023-12-02 08:40:34 26 4
gpt4 key购买 nike

我正在尝试根据我在 LinkedHashMap 中填充的数据集计算百分位数。

Key             Value
1 1
2 1
3 1
4 6
5 10
5 19
7 19
8 20

如何获得每个值的百分位数?我正在使用以下代码,我认为它没有给出正确的百分位数。

float i = test.size();
float k = test.size();

if (test.size() > 1) {
float n = (i-1)*100/i;

for (int j = 0; j <=i ; ) {
if (i == 1) {
System.exit(0);
}
float a = (i-1)*100/k;
System.out.println("Percentile of lastvalue "+a);

i--;
System.out.println("Size of i "+i);
}
} else {
System.out.println("Bye");
}

如果有人可以帮助我,请帮助

我正在寻找类似这样的输出

Percentile of lastvalue 83.333336

Percentile of lastvalue 66.666664

Percentile of lastvalue 50.0
Percentile of lastvalue 33.333332

Percentile of lastvalue 16.666666

百分比将从列表中的最高值开始计数

最佳答案

首先,test.size() 返回 LinkedHashMap 中的条目数,这可能不是您想要的。如果我理解正确,您想要计算所有值之和的每个值的相对大小(百分位数)。这就是我的代码片段完成的任务。

此外,您已经将键 5 写入了两次,我相信您不是故意这样做的(LinkedHashMaps 或哈希表通常不支持重复键)。因此,我将最后一个 5 更改为 6。

import java.util.LinkedHashMap;
import java.util.List;
import java.util.ArrayList;

class CalcPercentiles
{
public static void calcPercentiles(LinkedHashMap hashMap) {
int size = hashMap.size();

List<Integer> value_list = new ArrayList(hashMap.values());

int sum = 0;
for (int i = 0; i < size; i++) {
sum += value_list.get(i);
}

for (int i = 0; i < size; i++) {
System.out.println(100 * value_list.get(i) / (float) sum);
}
}

public static void main(String[] args)
{
LinkedHashMap hashMap = new LinkedHashMap();
hashMap.put(1, 1);
hashMap.put(2, 1);
hashMap.put(3, 1);
hashMap.put(4, 6);
hashMap.put(5, 10);
hashMap.put(6, 19);
hashMap.put(7, 19);
hashMap.put(8, 20);
CalcPercentiles.calcPercentiles(hashMap);
}
}

输出:

1.2987013
1.2987013
1.2987013
7.7922077
12.987013
24.675325
24.675325
25.974026

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

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