首先,我是 Java 编码新手。我正在编写一个程序,该程序计算总和为 100% 的随机概率。 例如: 参与者 1:20% 的机会获胜。 参与者 2:25% 的机会获胜。 参与者 3:45% 的机会获胜。 参与者 4:10% 的机会获胜。
我实际上如何挑选获胜者? 我的猜测是检查一个随机数(0-100)是否位于一个间隔之间。 例如:参与者 1 的范围在 0 到 20 之间。 参与者 2 的范围在 20 到 45 之间,依此类推。
但是我如何在 Java 中实际实现它? 感谢您的帮助!
答案 0 :(得分:1)
一种方法是,使用伪随机生成器 (Math.random()) 并让它生成一个介于 0 和 1 之间的浮点数。然后将其乘以 100 以进入 0 到 100 的范围。如果此最终值小于机会的百分比,则参与者将获胜。
答案 1 :(得分:0)
一个很好的解决方案是将参与者放在独家 plages 中([1, 20]; [21, 45]; [46, 90] 和 [91, 100]),选择一个随机数并选择落下的参与者内部:
Random r = new Random();
int randomNumber = r.nextInt(100) + 1;
Map<String, Integer> map = new HashMap<String, Integer>() {{
put("Alice", 20);
put("Juan", 25);
put("Michael", 10);
put("Natasha", 45);
}};
String winner = "";
int currentPlage[] = {0, 0};
for (String participant : map.keySet()) {
currentPlage[0] = currentPlage[1] + 1;
currentPlage[1] = map.get(participant) + currentPlage[0] - 1;
if (randomNumber >= currentPlage[0] &&
randomNumber <= currentPlage[1]) {
winner = participant;
break;
}
}
System.out.println(winner);