首页 > 解决方案 > 如何偶然获得有效且正确的掉落系统

问题描述

我想根据我设定的赔率获得 Minecraft 中最有效、最正确的掉落系统。

我实际上是这样创建的:

double randomChance = getRandom(0, 100);
for(DropObject dropObject : getDropByCategoryAndSource(category, source)) {
    if(randomChance <= dropObject.getChance()) {
        //give item etc.
    }
}

这样做的问题是,并非所有物品都会掉落,只有少数物品会掉落。我怎样才能使它成为一个更有效的系统以使其更好地工作?

标签: javabukkit

解决方案


我看到的一个问题是,由于您正在生成一个从 0 到 100 的数字,然后将其与列表进行比较。因此,如果您从随机方法中获得数字 37,则意味着所有机会等于或高于 37% 的项目都将被丢弃,我认为这不是预期的行为。

我不知道该列表的大小,但也许您可以在列表循环中生成一个新的随机数。


推荐阅读