Как эффективно выбирать элемент массива случайным образом без повторений
Ваш код создает массив последних вариантов выбора, чтобы предотвратить повторение, и вызывает рекурсивную функцию называется ChooseName(), когда выбранный элемент находится в списке последних вариантов выбора. Этот подход обеспечивает уникальность, но может привести к бесконечному циклу, если размер массива ограничен.
Это рекурсивная функция?
Да, метод ChooseName() вызывает саму себя найти уникальный выбор. Рекурсия позволяет функции перебирать элементы массива, пока не найдет тот, которого нет в списке последних вариантов.
Повышение эффективности
Чтобы избежать бесконечного цикла, рассмотрите альтернативный подход предложено в ответе:
function randomNoRepeats(array) {
var copy = array.slice(0);
return function() {
if (copy.length Эта функция генерирует копию исходного массива и случайным образом выбирает из него элемент. Как только все элементы будут использованы, он создаст новую копию исходного массива, гарантируя уникальность выбора, даже если массив исчерпан.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3