Метод Фишера-Йейтса в JavaScript: случайное перемешивание элементов массива

Метод Фишера-Йейтса, также известный как перетасовка Кнута, представляет собой алгоритм, используемый для случайного перемешивания элементов массива. В JavaScript перетасовку Фишера-Йейтса можно реализовать с помощью следующих шагов:

  1. Начните с массива элементов, которые вы хотите перемешать.
  2. Перебрать массив от последнего элемента к первому.
  3. На каждой итерации генерировать случайный индекс между 0 и текущим индексом.
  4. Замените элемент с текущим индексом на элемент со случайно сгенерированным индексом.
  5. Продолжайте этот процесс, пока не обработаете все элементы массива.

Вот пример реализации перетасовки Фишера-Йейтса в JavaScript:

function fisherYatesShuffle(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const randomIndex = Math.floor(Math.random() * (i + 1));
    [array[i], array[randomIndex]] = [array[randomIndex], array[i]];
  }
  return array;
}
// Example usage
const myArray = [1, 2, 3, 4, 5];
console.log(fisherYatesShuffle(myArray));

Эта реализация перемешивает элементы массива myArrayс помощью метода Фишера-Йейтса и выводит перетасованный массив.

Другие методы перетасовки элементов в JavaScript включают:

  1. Использование метода sortс настраиваемой функцией сравнения:

    const myArray = [1, 2, 3, 4, 5];
    myArray.sort(() => Math.random() - 0.5);
    console.log(myArray);
  2. Использование функции shuffleбиблиотеки lodash(требуется установка пакета lodash):

    const _ = require('lodash');
    const myArray = [1, 2, 3, 4, 5];
    const shuffledArray = _.shuffle(myArray);
    console.log(shuffledArray);
  3. Использование функции shuffleбиблиотеки d3-array(требуется установка пакета d3-array):

    const d3Array = require('d3-array');
    const myArray = [1, 2, 3, 4, 5];
    const shuffledArray = d3Array.shuffle(myArray);
    console.log(shuffledArray);