有志者事竟成。

产生指定范围不重复的随机数,产生指定数组不重复的随机数

/**
             *  产生指定范围不重复的随机数
             *  参数一: 最小值    int
             *  参数二: 最大值    int
             *  参数三: 随机数量  int
             *  返回值: 结果数组  Array
             **/
            function getRandNumForRange(least, max, num) {
                // 检查传值是否合法
                if(num > max - least) return false;
                // 产生指定范围的所有数值
                var numList = [],
                    numRandList = [],
                    randId;
                for(var i = least; i < max; i++) numList.push(i);
                // 产生记录次数
                for(var i = 0; i < num; i++) {
                    randId = Math.floor(Math.random() * numList.length); // 随机一个数组ID
                    numRandList.push(numList[randId]); // 获取这个值
                    numList.splice(randId, 1); // 删除这个成员 防止下次再次生成
                }
                return numRandList;
            }

            /**
             *  产生指定数组不重复的随机数
             *  参数一: 抽取数组  Array
             *  参数二: 随机数量  int
             *  返回值: 结果数组  Array
             **/
            function getRandNumForArray(numArray, num) {
                // 检查传值是否合法
                if(num > numArray.length) return false;
                // 产生记录次数
                var numRandList = [],
                    randId;
                for(var i = 0; i < num; i++) {
                    randId = Math.floor(Math.random() * numArray.length); // 随机一个数组ID
                    numRandList.push(numArray[randId]); // 获取这个值
                    numArray.splice(randId, 1); // 删除这个成员 防止下次再次生成
                }
                return numRandList;
            }

 

posted on 2019-08-29 14:27  阿长*长  阅读(299)  评论(0编辑  收藏  举报

导航