Как сделать чтобы рандомные числа не повторялись

например есть такой код который сработывает при клике

int random = (int)(Math.random() * 5);

как сделать чтобы при нажатии если предыдущее число не совпало с настоящим, внизу написал пример

первый клик: получилось 5
второй клик: получилось 4
третьий клик: получилось опять 4

как сделать чтобы 2 раза не повторялись числа таким образом


Ответы (2 шт):

Автор решения: Bakuard

Предположу, что вам не надо генерировать числа бесконечно. Тогда ответ будет таким:

  1. создайте массив целых чисел нужной вам длины.
  2. Заполните массив числами в порядке возрастания и убывания (начальное число и шаг прогрессии выбирите какие угодно).
  3. Перемешайте массив случайным образом. Для получения случайных чисел просто последовательно перебирайте массив.
→ Ссылка
Автор решения: 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;
    }
}

Например так

→ Ссылка