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

本文介绍了在处理大量数组元素时,一种比使用sort(function(){ return 0.5 - Math.random() })更高效的随机打乱数组排序的方法。这种方法在执行效率上具有优势。
                  //随机数方法
                  //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;
                        };
                    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值