/** * 产生指定范围不重复的随机数 * 参数一: 最小值 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; }