Как организовать random без повторений на java?

Пользователь

от charles.orn , в категории: Java , 7 месяцев назад

Как организовать random без повторений на java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ciara , 7 месяцев назад

@charles.orn 

Для организации случайного выбора без повторений в Java можно воспользоваться следующим подходом:

  1. Создайте список или массив, содержащий все возможные значения или элементы, которые вы хотите случайно выбирать без повторений.
  2. Создайте генератор случайных чисел, используя класс Random. Например, можно использовать следующий код для создания генератора:
1
Random random = new Random();


  1. Используя генератор случайных чисел, выберите случайный индекс из списка или массива значений, созданного в первом шаге:
1
int randomIndex = random.nextInt(values.length);


  1. Получите случайное значение из списка или массива по выбранному индексу:
1
int randomValue = values[randomIndex];


  1. Удалите выбранное значение из списка или массива, чтобы избежать повторного выбора:
1
2
values[randomIndex] = values[values.length - 1];
values = Arrays.copyOf(values, values.length - 1);


  1. Повторяйте шаги 3-5 до тех пор, пока список или массив не будет пустым.


Этот подход гарантирует случайность выбора каждого элемента без повторений.

Пользователь

от autumn_parker , 2 месяца назад

@charles.orn 

Вот пример кода на Java, реализующий случайный выбор элементов без повторений:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class RandomWithoutRepetition {
    public static void main(String[] args) {
        List<Integer> values = new ArrayList<>();
        // Заполнение списка значениями
        for (int i = 1; i <= 10; i++) {
            values.add(i);
        }

        // Перемешиваем список
        Collections.shuffle(values);

        // Выбираем элементы без повторений
        Random random = new Random();
        while (!values.isEmpty()) {
            int randomIndex = random.nextInt(values.size());
            int randomValue = values.get(randomIndex);
            System.out.println("Random value: " + randomValue);
            values.remove(randomIndex);
        }
    }
}


Этот код создает список чисел от 1 до 10, перемешивает его, затем выбирает случайные значения из списка без повторений до тех пор, пока список не будет пустым.