Содержание
Получить случайный элемент массива в 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