🚀 Fisher–Yates shuffle(洗牌算法),快速让一个数组乱序

📅 发布于 2025年12月 | 👤 作者:博主 | 🏷️ 标签:"css盒模型","box-sizing", Web开发, 前端, 面试

欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。

总结

从后往前遍历数组,每次将当前位置 i 与 [0, i] 范围内(包含自身)的一个随机位置 j 交换。

🌟 正确实现示例:

        
        function fisherYatesShuffle(arr) {
          for (let i = arr.length - 1; i > 0; i--) {
            const j = Math.floor(Math.random() * (i + 1)); // 0 到 i 的整数
            [arr[i], arr[j]] = [arr[j], arr[i]];           // ES6 解构交换
          }
          return arr;
        }

        // 注意:不要用 arr.sort(() => Math.random() - 0.5)!
        // 它的分布不均匀(见下方⚠️)
        
       

🌟 为什么 arr.sort(() => Math.random() - 0.5) 是错的?

← 返回首页