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

Помогите Генерация рандомных чисел

Тема в разделе "Разработка плагинов для новичков", создана пользователем skizord, 30 июл 2023.

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

    skizord Новичок

    Баллы:
    16
    Имя в Minecraft:
    skizord
    Мне нужно чтобы переменная rand генерировалась в if(alternate == true), но если я это делаю то появляется ошибка в else, я бы мог инициализировать переменную за проверкой, но смысл итогового плагина становится совсем другим, знаю вопрос немного не про Bukkit, но я не знаю куда обращаться еще.
    if (alternate) {
    int rand = generate_random_number(); //переменная из за которой все проблемы
    chooseTerracottaType(rand);
    timer = 3;
    } else {
    if (rand == 1) {
    player.sendMessage(ChatColor.GREEN + "Ваш цвет" + ChatColor.RED + " Зеленый");
    } else if (rand == 2) {
    player.sendMessage(ChatColor.GREEN + "Ваш цвет" + ChatColor.RED + " Красный");
    } else if (rand == 3) {
    player.sendMessage(ChatColor.GREEN + "Ваш цвет" + ChatColor.RED + " Желтый");
    } else if (rand == 4) {
    player.sendMessage(ChatColor.GREEN + "Ваш цвет" + ChatColor.RED + " Фиолетовый");
    } else if (rand == 5) {
    player.sendMessage(ChatColor.GREEN + "Ваш цвет" + ChatColor.RED + " Синий");
    }
    spawnTerracotta();
    timer = 5;
    }
     
  2. MrAlexeiMK

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

    Баллы:
    66
    Имя в Minecraft:
    MrAlexeiMK
    Вынеси 'rank' за if и инициализируй в if(alternate)
     
  3. Xatiman

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

    Баллы:
    61
    Имя в Minecraft:
    Xatiman
    зачем использовать else if милион если можно воспользоваться swinch case "1": и тд, если ты хочешь реализацию от рандомного числа от 0 до 10 или сколько тебе нужно, ставишь от какого по какое число твой generate_random_number() и в свиче ставишь default: "ошибка" тогда код не будет крашиться. и вообще нах использовать какой-то стремный генератор рандомных чисел если в самой java есть свой генератор:

    public class Test {
    public static void main(String[] args){
    double a = Math.random()*3;
    System.out.println(a);
    }
    }
    Как это работает?

    Диапазон [0;1) умножается на 3. Соответственно,
    Нижняя граница: 0*3 = 0
    Верхняя граница: 1*3 = 3

    Получаем диапазон [0;3)

    Если применить нашу формулу, получим:

    ( Math.random() * (3 - 0) ) + 0 => Math.random() * 3

    Что и отображено в программе.

    int a = (int) ( Math.random() * 11 ); если нужен инт (числа [0;10]
     
    Последнее редактирование: 1 авг 2023

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