Array.sort() を使用して配列をシャッフルできますか?
最初は懐疑的でしたが、Array.sort() メソッドは確かにシャッフルできます。配列のシャッフルに使用されます。その仕組みは次のとおりです:
シャッフルに Array.sort() を使用することの長所と短所
利点:
欠点:
結果のランダム性の測定
シャッフル手法のランダム性を定量化するには、経験的テストを実行し、結果を期待値と比較できます。 。たとえば、考えられる各置換の確率を計算し、それを一様分布と比較できます。
代替シャッフリング アルゴリズム (Fisher–Yates)
配列を使用します。 sort() は便利ですが、より最適でよく知られているシャッフル アルゴリズムは Fisher-Yates です。 shuffle:
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; }
このアルゴリズムは効率的 (O(n)) であり、結果の均一な分散を保証します。
以上がArray.sort() は配列をシャッフルできますか? シャッフルできる場合、どの程度ランダムですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。