Java 创建%系统

Java 创建%系统,java,javascript,Java,Javascript,我正在尝试编写一个系统来为我的游戏处理掉球,但是我不确定该怎么做。我所有的水滴都存储在一个2D数组中,看起来像这样 {MonsterID, ItemID, ChanceOfDrop(1-100)} 我已经创建了一个骰子系统,可以选择一个1-100之间的随机数,但我一辈子都不知道如何正确地将其合并 例如,让物品“药剂”下降3%的时间 我掷骰子掷了7分 什么是正确的方法来做数学检查,看看它是否完成了 我想做roll而不是使用任何骰子系统,只需使用Java附带的Random类,并使用float来获得

我正在尝试编写一个系统来为我的游戏处理掉球,但是我不确定该怎么做。我所有的水滴都存储在一个2D数组中,看起来像这样

{MonsterID, ItemID, ChanceOfDrop(1-100)}
我已经创建了一个骰子系统,可以选择一个1-100之间的随机数,但我一辈子都不知道如何正确地将其合并

例如,让物品“药剂”下降3%的时间

我掷骰子掷了7分

什么是正确的方法来做数学检查,看看它是否完成了


我想做roll而不是使用任何骰子系统,只需使用Java附带的Random类,并使用float来获得机会。另外,假设大多数怪物只能掉落少数可能的物品,你的阵法是非常浪费的,储存了大量的物品,例如鸡->铁锭->0%的物品。相反,只存储可以删除的项目列表以及它们删除的机会,并使用哈希映射数组:

static Random rand = new Random();
protected Map<Integer, Float>[] allDrops = new Map[numMonsters]; 
//integer = itemID, float = chance of drop (eg 3F/100)

Map<Integer, Float> drops = allDrops[monsterID];
for (Entry<Integer, Float> e : drops.entrySet()) {
    if (rand.nextFloat() < e.getValue()) dropItem(Items.getById(e.getKey()));
}

这是Java还是JavaScript?这是两种完全不同的语言。而且,81小于20?我不知道…@Doorknob我的大脑现在很疲惫,当然81不低于20,但是如果81=20是真的,但是。。。100-20=80,因此,如果按照这种方式计算,则该项目的下降率为80%。我甚至不知道。无论使用哪种语言,桅杆都应采用相同的方式。我展示了Psuedo代码,我不介意翻译,但它是Java的,我该如何添加和增加数量?假设我想为一个项目添加MinDrop和MaxDrop金额。地图只允许,所以我不能传递添加的细节。如果您想要一个更复杂的系统,您可以创建一个新类,该类具有一个函数,该函数确定随机丢弃的量,并使用该函数来代替Float。
static Random rand = new Random();
protected Map<Integer, Float>[] allDrops = new Map[numMonsters]; 
//integer = itemID, float = chance of drop (eg 3F/100)

Map<Integer, Float> drops = allDrops[monsterID];
for (Entry<Integer, Float> e : drops.entrySet()) {
    if (rand.nextFloat() < e.getValue()) dropItem(Items.getById(e.getKey()));
}
allDrops[monsterID].put(itemID, dropChance);