Новый канал Пульс Технологий – самые свежие и обсуждаемые новости из мира науки и IT. Подписывайся!
23 января 2020
При разработке приложений иногда бывает необходимо выбрать случайный элемент из некоторого множества. Предположим, что у нас есть список фруктов и нам нужно выбрать случайным образом один из них.
Сначала создадим генератор случайных значений SecureRandom. Можно также использовать и обычный Random, но первый выдаёт более случайные значения.
Затем мы воспользуемся методом random.nextInt(). Он возвращает целые числа в диапазоне от 0 (включительно) до указанной верхней границы. При этом само значение верхней границы исключается. В нашем примере мы передаём в этот метод количество элементов в списке (3), и он может вернуть одно из следующих значений: 0, 1 или 2. Сам элемент мы получим просто обратившись к списку по сгенерированному случайному индексу.
Но что если нам нужно получить несколько случайных элементов и при этом элементы не должны повторяться?
Данный метод на вход принимает набор Set всех возможных вариантов (т.е. там гарантированно нет дублирующихся строк) и кол-во элементов, которое нужно из него выбрать случайным образом.
Опять-таки создаём объект SecureRandom, а также новый список на основе исходного, из которого будем удалять уже выбранные элементы. Далее просто проходим в цикле нужное количество итераций, выбирая случайный элемент аналогично первому примеру. И в конце каждой итерации удаляем из созданного нами списка уже выбранный элемент.
Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.