使用 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中文网其他相关文章!