【算法实现】随机数生成器
背景介绍 实际工作中随机数的使用特别多,比如随机抽奖、随机翻牌。通过随机数还能实现很多有趣的效果,比如随机改变元素的位置或颜色。
本题需要在已提供的基础项目中使用 JS 知识封装一个函数,该函数可以根据需要,生成指定范围和个数的不重复的随机数数组。
步骤准备 在开始答题前,你需要在线上环境终端中键入以下命令,下载并解压所提供的文件。
wget https://labfile.oss.aliyuncs.com/courses/7835/exam12-imi.zip && unzip exam12-imi.zip && rm exam12-imi.zip copy 下载完成之后的目录结构如下:
├── index.html # 页面布局 └── js ├── index.js # 页面功能实现的逻辑代码 copy 源码下载后,选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。
接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果:
图片描述
当前并未生成并显示指定条件的随机数。
考试要求 请在 index.js 文件中补全函数 getRandomNum 中的代码,最终将根据指定条件生成的随机数显示在页面中。
具体需求如下:
封装函数 getRandomNum(min,max,countNum)。 生成 min ~ max 范围的 countNum 个不重复的随机数,最终这些随机数以一个数组的形式返回。 最终实现效果如下:
图片描述
要求规定 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径等。 满足题目需求后,保持 Web 服务处于可以正常访问状态,点击「提交检测」系统会自动判分。 总通过次数: 193 | 总提交次数: 200 | 通过率: 96.5%
题解
考点:Math.random() 生成一个 0.0-1.0 之间的随机数
const getRandomNum = function(min,max,countNum){
var arr = [];
let length = 0;
for (let i = 0; i >= 0; i++) {
const num = parseInt(Math.random() * max) + min
if (length === countNum) break
if (!i) {
arr.push(num)
length++
}
else {
let flag = true
for (let j = 0; j <= arr.length; j++) {
if (num === arr[j]) {
flag = false
}
}
if (flag) {
arr.push(num)
length++
}
}
}
return arr;
}
module.exports = getRandomNum;
我真菜啊,解题过程中写了几次死循环,把浏览器都卡死了。。。。
|