ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で配列を効率的にシャッフルするにはどうすればよいですか?
JavaScript を使用した配列のシャッフル
Fisher-Yates シャッフル アルゴリズムは、JavaScript で配列をシャッフルする効果的な方法を提供します。要素をランダムに交換することで、考えられる各順序付けが同じ確率で発生することが保証されます。
アルゴリズムの実装
フィッシャー・イェーツのシャッフル アルゴリズムは次のように実装できます。
function shuffle(a) { var j, x, i; for (i = a.length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i + 1)); x = a[i]; a[i] = a[j]; a[j] = x; } return a; }
このアルゴリズムは配列を逆順に反復処理します。各要素を配列内でその前にあるランダムな要素と交換します。結果の配列は、スワップのランダムな性質によりシャッフルされます。
使用法
シャッフル関数は、次の構文を使用して配列をシャッフルするために使用できます。
var myArray = ['1','2','3','4','5','6','7','8','9']; shuffle(myArray);
ES6バージョン
Fisher-Yates アルゴリズムは ES6 で最適化されています:
function shuffle(a) { for (let i = a.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [a[i], a[j]] = [a[j], a[i]]; } return a; }
実装プロトタイプ
このアルゴリズムは次のように実装できます。直接シャッフルを容易にする配列プロトタイプメソッドarrays:
Object.defineProperty(Array.prototype, 'shuffle', { value: function() { for (let i = this.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [this[i], this[j]] = [this[j], this[i]]; } return this; } });
この実装では、arr.shuffle() 構文を使用して配列をシャッフルできます。
以上がJavaScript で配列を効率的にシャッフルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。