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