你能使用 Array.sort() 對陣列進行打亂嗎?
儘管最初持懷疑態度,但 Array.sort() 方法確實可以用於數組改組。它的工作原理如下:
使用Array.sort() 進行洗牌的優點和缺點
優點:
缺點:
測量結果的隨機性
為了量化洗牌技術的隨機性,可以進行實證測試並將結果與預期值進行比較。例如,可以計算每種可能排列的機率,並將其與均勻分佈進行比較。
另一種洗牌演算法(Fisher-Yates)
使用Array. 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中文網其他相關文章!