根据百分比选择项目

Pick item based on percentage

我正在创建一个插件,我正在努力弄清楚如何使用 HashMap.

根据他们的百分比选择获胜者

在我的插件中,每个玩家存入一个物品,然后根据物品的价值,他们会收到一定比例的返还。我正在尝试根据概率选择获胜者。现在有 多个 用户正在存放物品,这意味着数量可能是 Double.

有什么方法可以计算吗?

package com.test;

import java.text.DecimalFormat;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;

public class Main {

static HashMap<String, Double> JackpotEntrys = new HashMap<String, Double>();
static HashMap<String, Double> JackpotPCE = new HashMap<String, Double>();
static HashMap<String, Double> Stage1JPE = new HashMap<String, Double>();

public static void main(String[] args) {

    JackpotEntrys.put("mrgreen33gamer", 155.000);
    JackpotEntrys.put("XeneonHD", 270.000);
    JackpotEntrys.put("BadBoyBaldSpot", 760.000);
    JackpotEntrys.put("Kingcreeper6", 455.000);
    JackpotEntrys.put("Kingcreeper5", 50.000);
    JackpotEntrys.put("Kingcreeper4", 100.000);
    JackpotEntrys.put("Kingcreeper3", 20.000);
    JackpotEntrys.put("Kingcreeper2", 15.000);
    JackpotEntrys.put("Kingcreeper1", 5.000);

    Set<String> PCES1 = JackpotEntrys.keySet();
    for (Iterator<String> i = PCES1.iterator(); i.hasNext(); ){
        String key = (String) i.next();
        Double value = (Double) JackpotEntrys.get(key);



    }

    JPValue();
    PCE_JPE_Pick();

}

public static void JPValue(){
    Collection<Double> values = JackpotEntrys.values();

    int Total = 0;
    for (Double value : values) {
        Total += value;
    }
    System.out.println("Jackpot was totalled at: " + Total);
}

public static void PCE_JPE_Pick(){

    System.out.println("========== NEW LINE ==============");

    Set<String> PCES1 = JackpotEntrys.keySet();
    for (Iterator<String> i = PCES1.iterator(); i.hasNext(); ){
        String key = (String) i.next();
        Double value = (Double) JackpotEntrys.get(key);


        double finalPE = value / 1000;

        JackpotPCE.put(key, finalPE);
    }

    Set<String> PCES2 = JackpotPCE.keySet();
    for(Iterator<String> i2 = PCES2.iterator(); i2.hasNext(); ){
        String key = (String) i2.next();
        Double value = (Double) JackpotPCE.get(key);
        System.out.println(key + " has a probability of DOUBLE: " + value);
    }

    Random r = new Random();
    double randomValue = 0 + (1 - 0) * r.nextDouble();

    System.out.println(randomValue);

}

public static double probabilityCal(double PlayerDepot) {

    Collection<Double> values = JackpotEntrys.values();
    int Total = 0;
    for (Double value : values) {
        Total += value;
    }

    double percentage = (double) ((PlayerDepot * 100) / Total);
    DecimalFormat df = new DecimalFormat("#.###");
    double finalPercentage = Double.parseDouble(df.format(percentage));
    return finalPercentage;
}
}

另一件事:如果我试图选出一个每个人都有 33% 的赢家,我会如何选那个球员?

如果你正在寻找算法,我可以提供帮助。假设您有三个百分比值 25%、25% 和 50%。您需要做的是将它们转换为 0 到 1 之间的连续范围,因此第一个变为 0 到 0.25 的范围,第二个变为 0.25 到 0.5 的范围,第三个变为 0.5 到 1 的范围。生成一个介于 0 和之间的随机双精度数1,无论你的随机数落在哪个范围内,就是赢家。