使用JavaScript Array.sort() 洗牌:一項考試
在本文中,我們將探討使用JavaScript 的有效性和功效用於洗牌的Array.sort() 方法。
問題
在調試會話期間出現的程式碼片段引起了人們對這種方法的適用性的擔憂:
function randOrd(){ return (Math.round(Math.random())-0.5); } coords.sort(randOrd); alert(coords);
儘管結果看起來令人滿意,但由於缺乏sort() 方法使用的排序演算法的理論支持。此外,人們也擔心不同實作中洗牌的一致性。
回答問題
使用 sort() 洗牌是否正確?
理論上,Jon 回答的,不建議依賴 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中文網其他相關文章!