实际工作中随机数的使用特别多,比如随机抽奖、随机翻牌。通过随机数还能实现很多有趣的效果,比如随机改变元素的位置或颜色。
本题需要在已提供的基础项目中使用 JS 知识封装一个函数,该函数可以根据需要,生成指定范围和个数的不重复的随机数数组。
在开始答题前,你需要在线上环境终端中键入以下命令,下载并解压所提供的文件。
wget https://labfile.oss.aliyuncs.com/courses/7835/exam12-imi.zip && unzip exam12-imi.zip && rm exam12-imi.zip
下载完成之后的目录结构如下:
├── index.html # 页面布局
└── js
├── index.js # 页面功能实现的逻辑代码
源码下载后,选中?index.html
?右键启动 Web Server 服务(Open with Live Server),让项目运行起来。
接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果:
当前并未生成并显示指定条件的随机数。
请在?index.js
?文件中补全函数?getRandomNum
?中的代码,最终将根据指定条件生成的随机数显示在页面中。
具体需求如下:
getRandomNum(min,max,countNum)
。min
?~?max
?范围的?countNum
?个不重复的随机数,最终这些随机数以一个数组的形式返回。最终实现效果如下:
首先要确定题目的需求,实现一定范围内的随机数,并且不重复
首先获得使用for循环,获得随机数
? ? ? ? min = Math.ceil(min);
? ? ? ? max = Math.floor(max)
? ? ? ? let num = Math.floor(Math.random() * (max - min + 1)) ?+ min;
然后判断已经有的这个数组里面有没有重复
如果这个arr数组里面没有这个num,则push进去
? ? ? ? if(arr.indexOf(num) === -1){
? ? ? ? ? ? arr.push(num);
? ? ? ? }
总体实现代码
/**
* 封装函数,函数名 getRandomNum(min,max,countNum)
* 生成 min~max 范围的 countNum 个不重复的随机数,存入数组并返回
*/
//生成指定数目和范围的随机数
const getRandomNum = function(min,max,countNum){
var arr = [];
for(let i = 0; i < countNum ; i++ ){
min = Math.ceil(min);
max = Math.floor(max)
let num = Math.floor(Math.random() * (max - min + 1)) + min;
if(arr.indexOf(num) === -1){
arr.push(num);
}
}
// 在此处补全代码
return arr;
}
module.exports = getRandomNum; //请勿删除