js 生成字母、数字随机数方法

  • Post author:
  • Post category:其他


                  //随机数方法
                  //len是返回的随机字符串的最少长度
                function random(len){
                    let arr_=[];
                    //生成1-100的数组
                    for(let i=0;i<100;i++){
                        arr_[i]=i;
                    }
                    arr_.sort(function(){ return 0.5 - Math.random() });//随机打乱数组排序
                    let arr =[
                                'a','b','c','d','e','f','g','h','i','j',
                                'k','l','m','n','o','p','q','r','s','t',
                                'u','v','w','x','y','z','A','B','C','D',
                                'E','F','G','H','I','J','K','L','M','N',
                                'O','P','Q','R','S','T','U','V','W','X',
                                'Y','Z'
                             ];
                    arr.sort(function(){ return 0.5 - Math.random() });//随机打乱数组排序
                    let arrs = arr.concat( arr_);//合并两数组
                    arrs.sort(function(){ return 0.5 - Math.random() });//随机打乱数组排序,获得一个含有1-100和大小写的52      字母元素的数组
                    //循环遍历拼接随机数
                    let str='';
                    for(let i = 0; i <len; i++){
                    //Math.floor(Math.random()*153 )意思是0~1(不含1)*153。随机取得1-153(不含153)范围的随机数,向下取整可获得1-152范围的索引数值
                        let index= Math.floor(Math.random()*153);
                        str+=arrs[index];
                    }
                 return str;
                }


提示:当排序的数组元素很大时可以用一下方法打乱数组排序,该方法比sort(function(){ return 0.5 – Math.random() }),的执行效率更快

                 if (!Array.prototype.randomSort) {
                        Array.prototype.randomSort = function() {
                            for(let j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
                            return this;
                        };
                    }



版权声明:本文为qq_37621866原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。