欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-19 20:56:30
...
/**
             *  产生指定范围不重复的随机数
             *  参数一: 最小值    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;
            }