配列をランダムにシャッフルする(JavaScript)
配列をランダムにシャッフルする(JavaScript)
配列をランダムにシャッフルする機能を実装する機会があって、調べたことをメモ。
どうやら、Fisher–Yates shuffle という有名なアルゴリズムがある模様。
配列からランダムに要素を抽出して並べていくアルゴリズム。
こちらのサイトでグラフィカルにシャッフルの動きを見ることができる。
https://bost.ocks.org/mike/shuffle/
コードサンプル
/** * Fisher–Yates shuffle * @param {*} array */ shuffle(array) { let length = array.length; while (length) { const r = Math.floor(Math.random() * length); [array[length], array[r]] = [array[r], array[--length]]; } return array; }