大家。我正在尝试在Bukkit中制作一个crates插件(这并不重要),而且我在随机抽奖方面遇到了麻烦。 由于一切都是可定制的(您可以随心所欲地创建无限量的奖品),我发现难以绘制百分比。 这是我现在的代码:
for (DoubleStack ds : items.values()) {
double chance = ds.getChance();
p.sendMessage(chance + " " + random + " " + ds.getItemStack().getType());
if (random >= chance) {
p.getInventory().addItem(ds.getItemStack());
break;
}
}
DoubleStack只是我制作的一个类,用于存储项目和获取项目的机会。 正如你所看到的,我使用的方法是错误的,因为机会不现实,你有机会得到多个项目(我不想要这个)
那么,我怎么能这样做呢?
谢谢!
另外,我已经查看了所有其他概率线程,但它们并未涵盖明确知道概率是什么,它们只是做了以下事情:
int x = new Random().nextInt(100);
if(x <= 10 && x >= 20) {
doSomething(); }
//Repeats with different numbers
答案 0 :(得分:1)
试试这个:
for (DoubleStack ds : items.values()) {
int random = new Random().nextInt(100);
int chance = ds.getChance(); // Must be in percentage
if (random < chance) {
p.getInventory().addItem(ds.getItemStack());
break;
}
}
总是获得奖励(机会必须加起来为100):
int random = new Random().nextInt(100);
int counter = 0;
for (DoubleStack ds : items.values()) {
int chance = ds.getChance();
if (random < (chance + counter) && random >= counter) {
p.getInventory().addItem(ds.getItemStack());
break;
}
counter+=chance;
}