Для того чтобы функция возвращала случайные значения из массива так, чтобы подряд не шли два одинаковых значения, можно воспользоваться следующим подходом:
1. Создайте функцию, которая будет принимать массив значений в качестве аргумента.
2. Внутри функции заведите переменную для хранения предыдущего выбранного значения.
3. В теле функции создайте цикл, который будет генерировать случайный индекс в массиве и проверять, не совпадает ли он с предыдущим выбранным индексом.
4. Если выбранный индекс не совпадает, верните значение из массива с этим индексом и запомните его как предыдущее значение.
5. Если индексы совпали, сгенерируйте новый случайный индекс до тех пор, пока не будет найдено подходящее значение.
Пример реализации данной функции на JavaScript:
function getRandomValueWithoutRepetition(arr) { let prevIndex = -1; // Инициализируем предыдущий индекс как -1 let randomIndex; // Функция для генерации случайного индекса, исключая предыдущий function getRandomIndex() { let index = Math.floor(Math.random() * arr.length); return index !== prevIndex ? index : getRandomIndex(); } return function getNextRandomValue() { randomIndex = getRandomIndex(); prevIndex = randomIndex; return arr[randomIndex]; }; } const values = [1, 2, 3, 4, 5]; const getNextRandomValue = getRandomValueWithoutRepetition(values); console.log(getNextRandomValue()); // Выведет случайное значение из массива без повторений console.log(getNextRandomValue()); // Выведет следующее случайное значение
Этот код создает функцию, которая возвращает случайные значения из массива values
, не повторяя их подряд. Алгоритм генерации случайного значения исключает предыдущий индекс, что обеспечивает разнообразие случайных значений.