Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

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;
}
 
зачем использовать 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]
 
Последнее редактирование:

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

Назад
Верх