Как сделать чтобы рандомные числа не повторялись
например есть такой код который сработывает при клике
int random = (int)(Math.random() * 5);
как сделать чтобы при нажатии если предыдущее число не совпало с настоящим, внизу написал пример
первый клик: получилось 5
второй клик: получилось 4
третьий клик: получилось опять 4
как сделать чтобы 2 раза не повторялись числа таким образом
Ответы (2 шт):
Автор решения: Bakuard
→ Ссылка
Предположу, что вам не надо генерировать числа бесконечно. Тогда ответ будет таким:
- создайте массив целых чисел нужной вам длины.
- Заполните массив числами в порядке возрастания и убывания (начальное число и шаг прогрессии выбирите какие угодно).
- Перемешайте массив случайным образом. Для получения случайных чисел просто последовательно перебирайте массив.
Автор решения: AlekseiGaile
→ Ссылка
public class Main {
public static void main(String[] args) {
List<Integer> integers = new ArrayList<>();
for (int i = 0; i < 5; i++) {
int random = (int) (Math.random() * 5);
if (checkRandom(integers, random)) {
integers.add(random);
}
}
integers.forEach(System.out::println);
}
private static boolean checkRandom(List<Integer> integers, int random) {
for (Integer integer : integers) {
if (integer == random) {
return false;
}
}
return true;
}
}
Например так