IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 蓝桥杯Web:【算法实现】随机数生成器 -> 正文阅读

[JavaScript知识库]蓝桥杯Web:【算法实现】随机数生成器

【算法实现】随机数生成器

背景介绍
实际工作中随机数的使用特别多,比如随机抽奖、随机翻牌。通过随机数还能实现很多有趣的效果,比如随机改变元素的位置或颜色。

本题需要在已提供的基础项目中使用 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 个不重复的随机数,最终这些随机数以一个数组的形式返回。
最终实现效果如下:

图片描述
Alt

要求规定
请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径等。
满足题目需求后,保持 Web 服务处于可以正常访问状态,点击「提交检测」系统会自动判分。
总通过次数: 193 | 总提交次数: 200 | 通过率: 96.5%

题解

考点:Math.random() 生成一个 0.0-1.0 之间的随机数

/**
 * 封装函数,函数名 getRandomNum(min,max,countNum)
 * 生成 min~max 范围的 countNum 个不重复的随机数,存入数组并返回
 */
//生成指定数目和范围的随机数
const getRandomNum = function(min,max,countNum){
    var arr = [];
    // 在此处补全代码
    let length = 0;	// length 生成数量记录
    for (let i = 0; i >= 0; i++) {	// 这是个死循环,用 while应该更好理解
        const num = parseInt(Math.random() * max) + min // 生成随机数 min-max 之间
        if (length === countNum) break	// 死循环退出条件:生成了足够多的数
        if (!i) {	// !i ,i = 0才会被执行,用于将生成的第一个数插入
            arr.push(num)
            length++	// 插入并记录加1
        }
        else {	//从第二个生成的数字开始比对,将不相同的数字插入。
            let flag = true
            for (let j = 0; j <= arr.length; j++) {
                if (num === arr[j]) {
                    flag = false
                }
            }
            if (flag) {
                arr.push(num)
                length++	// 没找到相同的数字,插入并记录加1
            }
        }
    }
    return arr;
}
module.exports = getRandomNum; //请勿删除

我真菜啊,解题过程中写了几次死循环,把浏览器都卡死了。。。。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:08:57  更:2022-04-06 16:08:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:31:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码