根据百分比选择项目
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,无论你的随机数落在哪个范围内,就是赢家。
我正在创建一个插件,我正在努力弄清楚如何使用 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,无论你的随机数落在哪个范围内,就是赢家。