1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Реализовать рандомное появление

Тема в разделе "Разработка плагинов для новичков", создана пользователем NoooobKa, 5 фев 2021.

  1. Автор темы
    NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Есть набор итемов, каждый айтем имеет свой шанс выпадения(0-100%). Как реализовать появление рандомного айтема? На уме только такая реализация:
    Код:
            List<RandomizedItem> list = new ArrayList<>();//Лист предметов имеющих процент выпадения
            Map<Integer, ItemStack> map = new HashMap<>();//Мапа из которой будем получать рандомный айтем
            for (RandomizedItem item : list) {//Забиваем карту ключами = процентам(0-100), каждый ключ имеет свой айтем
                int size = map.size();
                for (int i = size + 1; i < item.getRandomValue(); i++) {
                    map.put(i, item.getItem());
                }
            }
            ItemStack randomItem = map.get(new Random().nextInt(100) + 1);//Получаем рандомный айтем
    Есть ли какие-то более простые пути?
     
  2. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    У твоего варианта есть два недостатка:
    1) Нет возможности указывать дробные шансы
    2) Нет возможности указывать отношение весов вместо процентов (когда сумма не равна сотне)

    Реализация, правда, тоже странноватая.
    Вот пара других реализаций без этих недостатков, принцип схож:

    Линейный код:
    https://stackoverflow.com/questions/6737283/weighted-randomness-in-java

    Отдельным объектом:
    https://stackoverflow.com/questions/6409652/random-weighted-selection-in-java/30362366

    Обе ссылки нашёл по запросу "java weighted random"
     
  3. Автор темы
    NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Благодарю
     

Поделиться этой страницей