シャッフルに JavaScript Array.sort() を使用する
JavaScript では、Array.sort() メソッドとカスタム比較関数を使用して、配列のシャッフルは複雑で信頼性が低い可能性がありますアプローチ。
Array.sort() がシャッフルに最適ではない理由
代替シャッフル方法: Fisher-Yates
Fisher-Yates シャッフル アルゴリズムは、配列をランダムな順序で並べ替える効率的で信頼性の高い方法です。その仕組みは次のとおりです:
function shuffle(array) { var tmp, current, top = array.length; if(top) while(--top) { current = Math.floor(Math.random() * (top + 1)); tmp = array[current]; array[current] = array[top]; array[top] = tmp; } return array; }
フィッシャー・イェーツが推奨される理由
シャッフルの測定ランダム性
シャッフル アルゴリズムのランダム性を評価するには、次のような統計を計算できます。
これらのメトリクスに基づいて、Fisher-Yates は Array.sort() よりも均一に分散されたランダムなシャッフルを生成する傾向があります。
以上がJavaScript でのシャッフルに関して Fisher-Yates が Array.sort() よりも優れているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。