Случайный элемент массива javascript

Получить случайный элемент массива в JavaScript можно при помощи значения количества его элементов и функций Math.random() и Math.floor().

Случайное значение

Ниже простой пример получения случайного значения массива.

Функция arrayRandElement

Проще определить отдельную функцию arrayRandElement(arr) для получения случайного элемента массива, которая будет принимать в качестве параметра один параметр — массив, и возвращать его случайное значение.

Нужна функция возвращающая значение случайного элемента массива, но не повторяющегося.
Например, есть массив

содержит 12 цветов в формате RGB.
Получить случайное значение не трудно (генерирую случайный индекс и записываю его значение в переменную):

Чтобы следующее значение не повторялось, решил , что можно удалять из массива по индексу уже полученное значение и выбирать рандомно из оставшихся.
НО! Как это можно закольцевать при N-ом вызове функции. Чтобы после удаления всех элементов массива, вернуться к его первоначальному варианту и повторять процедуру.

Есть массив со списком городов. Нужно брать случайные 10 элементов данного массива, но повторений быть не должно. Подскажите, как правильно реализовать? Сейчас выводятся с повторениями.

3 ответа 3

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

Самый простой вариант: выбираете случайный элемент, меняете его местами с первым, затем выбираете случайный кроме первого, меняете местами со вторым и так далее

Всё ещё ищете ответ? Посмотрите другие вопросы с метками javascript или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Читайте также  Почему отображается формула а не значение

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.12.20.35703

Ссылка на основную публикацию
Adblock detector