虚假的洗牌算法
虚假的洗牌算法
最常见的:
const shuffle = (list) => list.sort((x, y) => Math.random() - 0.5) |
可这并不合理,对于这个数组:[1,2,3,4,5],每个数字出现在每个位置的概率应该是相同的。然而使用以上算法,1 出现在 index=4 位置的概率 与 4 出现在 index=4 的概率并不相同。
真正的洗牌算法
Fisher–Yates shuffle
const nums = Array(54) |
以上。
最常见的:
const shuffle = (list) => list.sort((x, y) => Math.random() - 0.5) |
可这并不合理,对于这个数组:[1,2,3,4,5],每个数字出现在每个位置的概率应该是相同的。然而使用以上算法,1 出现在 index=4 位置的概率 与 4 出现在 index=4 的概率并不相同。
Fisher–Yates shuffle
const nums = Array(54) |
以上。