シャッフルに JavaScript Array.sort() を使用する: 検討
この記事では、JavaScript を利用することの有効性と有効性を検討します。シャッフル用の Array.sort() メソッド。
問題
デバッグ セッション中に出現したコード スニペットにより、このアプローチの適切性について懸念が生じました。
function randOrd(){ return (Math.round(Math.random())-0.5); } coords.sort(randOrd); alert(coords);
結果は満足のいくものであるように見えましたが、不完全な点があったため懐疑論が残りました。 sort() メソッドで使用されるソート アルゴリズムの理論的サポート。さらに、異なる実装間でのシャッフルの均一性についての懸念も生じました。
質問への回答
シャッフルに sort() を使用するのは正しいですか?
ジョンが答えた理論上、sort() メソッドに依存することはお勧めできません。ソートアルゴリズムはさまざまであり、不均一な結果が生じる可能性があるため、シャッフルする場合に使用します。
代替シャッフル関数
sort() には欠点がありますが、効率的な実装は次のとおりです。順列の均等な分布を保証します:
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; }
評価ランダム性
ランダム性を評価するには、シャッフル結果を注意深く測定します。分布を期待値と比較することで、結果の均一性を評価できます。
実際の使用法への影響
シャッフルに sort() を使用する場合は、次の点を考慮してください。
以上がシャッフルに JavaScript の Array.sort() を使用するのは信頼できる方法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。