如何在JavaScript中正确打乱数组元素?
大家好!我是JavaScript新手,遇到了一个任务:需要将数组元素随机打乱。例如,我有一个包含游戏牌的数组:
```javascript
const cards = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
```
我希望打乱后元素的顺序是随机的。我尝试过使用 `Math.random()` 配合 `sort()`,像这样:
```javascript
cards.sort(() => Math.random() - 0.5);
```
看起来有效,但我读到这种方法不正确,因为分布不均匀。而且,某些元素可能比其他元素更频繁地留在原位。请告诉我如何在纯JavaScript中正确实现Fisher-Yates洗牌算法(或任何其他正确的算法)?重要的是,该函数要通用,适用于任何数组,而不仅仅是数字。提前感谢帮助!
<<>>
最佳答案:Fisher-Yates(Knuth)算法
您完全正确:虽然