【js随机选取元素,实现乱序有什么方法,他们都有什么区别? _变量 _表达式和运算符 _操作DOM 】 | IT修真院·坑乎
问题已收录 js随机选取元素,实现乱序有什么方法,他们都有什么区别?
我也踩过这个坑( 2 )
已统计您的踩坑,无需重复点击
回答(1)
变量 表达式和运算符 操作DOM
详细描述
截图
代码
编辑于2024-05-07
  • [北京|结业弟子]JS-顾仁鹏
    1

    核心就是Math运算,在固定范围内取随机数任务一里九宫格随机一个就是0~8的随机数:Math.floor(Math.random()*9,因为向下取整所以要乘九。

    随机颜色:var color3 = "#"+("00000"+(Math.floor(Math.random()*16777216)).toString(16)).slice(-6);//生成6位十六进制颜色

    随机颜色还有很多方法:

    for(var a=0;a<6;a++){

           var color4 = color4 + "0123456789abcdef"[Math.floor(Math.random()*16)];

           

        }

    //生成6位十六进制颜色

    for(var i=0;i<100000;i++){

        var r      = Math.floor(Math.random()*256);

        var g      = Math.floor(Math.random()*256);

        var b      = Math.floor(Math.random()*256);

        var color5 = "rgb("+r+','+g+','+b+")";

        

       }

    //rgb格式颜色

    乱序就更复杂 单论任务二用到的洗牌算法: 拿九宫格来说就是把九个格子位置编号,然后组成一个数组,随机选取数组中元素调换位置,生成一个新的排序。比较有名的 Fisher–Yates Shuffle 耶茨洗牌算法和高纳德洗牌算法,乱序算法讲起来太多,我说的都是任务里用得到的。

    耶茨算法:

    $(".way2").click(function() {

            var ARR  = [1,2,3,4,5,6,7,8,9,10];

            var copy = [],

                n    = ARR.length,

            i;

        // 如果还剩有元素。。

        while (n) {

            // 随机选取一个元素

            i = Math.floor(Math.random() * n--);

            // 移动到新数组中

            copy.push(ARR.splice(i, 1)[0]);

        }

        console.log(copy);

        return copy;

        })


    编辑于2019-04-05