Ящики с взвешенными случайными процентами - PullRequest
0 голосов
/ 18 мая 2018

Я работаю над плагином Spigot / Bukkit 1.8 и пытаюсь добавить ящики со случайными взвешенными предметами.

Например, Diamond, 10%;Золото 30%;Redstone, 50%;

Я пытался удерживать предметы в списке CrateItem, который является следующим классом

private ItemStack item;
private double chance;

public CrateItem(ItemStack item, double chance) {
    this.item = item;
    this.chance = chance;
}

public ItemStack getItem() {
    return item;
}

public double getChance() {
    return chance;
}

Затем я планирую циклически перебирать предметы, но не знаю лучшегоспособ подсчета взвешенных деталей и не быть полностью случайным.

1 Ответ

0 голосов
/ 18 мая 2018

Это чистая теория, и у меня нет опыта в разработке таблиц отбрасывания;но что делать, если вы просматриваете каждый элемент и делаете проверку истинно-ложно с вероятностью выпадения в процентах.Вы можете повторять один до тех пор, пока только 1 предмет не перевернет значение true (при условии, что из ящика выпадает только один предмет)

Чтобы уточнить, вы бы ...

  1. перебирали каждый предмет и,используя их шанс выпадения, сгенерируйте значение true / false, указывающее, может ли упасть.
  2. Если значение true / false равно false, удалите элемент из выпадений этого ящика.
  3. Если true / falseзначение истинно, сохраняйте предмет в каплях этого ящика.
  4. Повторяйте шаги 1-3, пока не останется только 1 предмет.
  5. Оставшимся предметом будет предмет, который упадет в ящик.

Если в ваш ящик упадет несколько предметов, например, 3 предмета.Вы можете выполнить весь процесс 3 раза.

Имейте в виду, это может привести к проблемам с производительностью, если в вашем ящике много падений и / или есть много элементов для циклического прохождения.

...