Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите [Java] Рандом с учётом настраиваемых шансов

Тема в разделе "Разработка плагинов для новичков", создана пользователем Dexel, 14 май 2017.

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

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

    Баллы:
    76
    Skype:
    the_osirius
    Добрый день.
    У меня есть несколько настраиваемых в конфигурации натуральных чисел, не превышающих 100. Они обозначает шансы срабатывания какого-то кода. Как можно реализовать рандом с шансом выпадения, равным этим числам? Например, шанс, что сработает этот код - x%, этот - n%, этот a%?
     
  2. Хостинг MineCraft
    <
  3. ItzFirstException

    ItzFirstException Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    FirstException
    Да, всё верно.
     
  4. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    http://stackoverflow.com/a/11552190
    Конечно, этот метод больше подходит для констант, но его можно легко переделать под ваш случай.
    Суть такова: делим промежуток от 0 до 1 (ну или от 0 до 100) на небольшие сегменты, соответствующие заданным в конфиге значениям, и проверяем, в какой именно промежуток попадает число, сгенерированное рандомайзером. Тут главное, чтобы сумма всех вероятностей была равна 1 (или 100).
     
    Последнее редактирование: 14 май 2017
  5. Автор темы
    Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Я чутка нуб. Пример кода можно? В гугле забанили.
     
  6. Grazy

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

    Баллы:
    76
    Имя в Minecraft:
    Prost
    PHP:
    double d =Math.random();
    if(
    <0.5)    // 50% chance of being here
    else if(<0.7)   // 20% chance of being here
    else
          
    // 30% chance of being here
    PHP:
    int foo =Math.random()*100;
    if(
    foo <80)    // 0-79
    sendMessage("hi");
    else if(
    foo <85)// 80-84
    sendMessage("bye");
    else 
    // 85-99
    sendMessage("test");
     
  7. Автор темы
    Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Как мне построить эти конструкции if-else, если я не знаю даже, сколько дадут чисел?
     

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