JavaScript で配列をシャッフルする

Created on

配列をシャッフルするときに使われる偏りのないアルゴリズムとして Fisher–Yates Shuffle というものがある。

JavaScript でこれを使って配列の値をシャッフルするには次のように書く。

// Function to shuffle an array
const shuffleArray = (array) => {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
};

もとの配列を変更せずに、シャッフルした新しい配列を返すには次のように書く。

// Function to shuffle an array
const getShuffledArray = (array) => {
  const newArray = array.slice();
  for (let i = newArray.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [newArray[i], newArray[j]] = [newArray[j], newArray[i]];
  }
  return newArray;
};

参考