蓝桥杯练习02随机数生成器

随机数生成器

介绍

实际工作中随机数的使用特别多,比如随机抽奖、随机翻牌。通过随机数还能实现很多有趣的效果,比如随机改变元素的位置或颜色。
本题需要在已提供的基础项目中使用JS知识封装一个函数,该函数可以根据需要,生成指定范围和个数的不重复的随机数数组。

准备

开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:

其中:
·js/index.js是页面功能实现的逻辑代码。
·index.html是页面布局。
在浏览器中预览index.html页面效果如下:

当前并未生成并显示指定条件的随机数。

目标

请在index.html文件中补全函数getRandomNum中的代码,最终将根据指定条件生成的随机数显
示在页面中。
具体需求如下:

  • 封装函数getRandomNum(min,maX,countNum)。

  • 生成min~max范围的countNum个不重复的随机数,最终这些随机数以一个数组的形式返回。
    最终实现效果如下:

最终效果图

规定

请勿修改本题默认项目代码文件夹中的文件名称、文件夹路径等,否则会导致考试系统无法正常评分。

代码

html

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title><script src="./js/index.js"></script></head><body><script type="text/javascript">var testArr = getRandomNum(1, 30, 3);document.write("<h1>1-30 以内的 3 个随机数:" + testArr + "</h1>");testArr = getRandomNum(1, 100, 10);document.write("<h1>1-100 以内的 10 个随机数:" + testArr + "</h1>");</script></body>
</html>

.js

const getRandomNum = function(min, max, countNum) {var arr = [];// 在此处补全代码return arr;
};
module.exports = getRandomNum; //请勿删除

答案

方法一

/*** 封装函数,函数名 getRandomNum(min,max,countNum)* 生成 min~max 范围的 countNum 个不重复的随机数,存入数组并返回*/
//生成指定数目和范围的随机数const getRandomNum = function(min, max, countNum) {var arr = [];// 在此处补全代码for (let i = 0; i < countNum; i++) {//1、生成随机数let number = Math.round(Math.random() * (max - min)) + min// 2、如果数组里已经存在该数则重新生成while (arr.indexOf(number) !== -1) {number = Math.round(Math.random() * (max - min)) + min}//3、把随机数添加到数组arr.push(number)} return arr;
};

arr.indexOf() 是 JavaScript 中数组的一个方法,用于查找数组中指定元素的第一个出现的索引位置。如果数组中存在该元素,则返回该元素的索引;若不存在,则返回-1。

方法二

const getRandomNum = function(min, max, countNum) {var arr = [];// 在此处补全代码//首先创建了一个空的 Set 对象let set = new Set()//Set 的大小达到 countNum 时循环就会结束while (set.size < countNum) {//生成随机数let number = Math.floor(Math.random() * (max - min)) + min;//随机数尝试添加到 Set 中set.add(number)}//使用扩展运算符将 Set 转换为数组赋值给 arrarr = [...set]return arr;
};
module.exports = getRandomNum; //请勿删除

在JavaScript中,Set 是一种特殊的类型,类似于数组,但是其成员的值都是唯一的,没有重复的值。创建一个空的 Set 对象可以使用 new Set() 构造函数。

大家有更简洁的写法可以一起讨论,共同进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/549196.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序问题—java实现

冒泡排序 算法思想&#xff1a; 每次比较相邻元素&#xff0c;若逆序则交换位置&#xff0c;每一趟比较n-1次&#xff0c;确定一个最大值。故需比较n趟&#xff0c;来确定n个数的位置。 外循环来表示比较的趟数&#xff0c;每一趟确定一个最大数的位置内循环来表示相邻数字两…

服务器病毒木马通用排查处理应急响应流程

目录 一、勒索病毒发作的特征 二、勒索病毒的应急响应 三、勒索病毒预防与事后加固 一、勒索病毒发作的特征 如果发现大量统一后缀的文件&#xff1b;发现勒索信在Linux/home、/usr等目录&#xff0c;在Windows 桌面或者是被加密文件的文件夹下。如果存在以上特…

mybatis-plus 的saveBatch性能分析

Mybatis-Plus 的批量保存saveBatch 性能分析 目录 Mybatis-Plus 的批量保存saveBatch 性能分析背景批量保存的使用方案循环插入使用PreparedStatement 预编译优点&#xff1a;缺点&#xff1a; Mybatis-Plus 的saveBatchMybatis-Plus实现真正的批量插入自定义sql注入器定义通用…

Linux进程通信补充——System V通信

三、System V进程通信 ​ System V是一个单独设计的内核模块&#xff1b; ​ 这套标准的设计不符合Linux下一切皆文件的思想&#xff0c;尽管隶属于文件部分&#xff0c;但是已经是一个独立的模块&#xff0c;并且shmid与文件描述符之间的兼容性做的并不好&#xff0c;网络通…

华为汽车业务迎关键节点,长安深蓝加入HI模式,车BU预计今年扭亏

‍编辑 |HiEV 一年之前&#xff0c;同样是在电动汽车百人会的论坛上&#xff0c;余承东在外界对于华为和AITO的质疑声中&#xff0c;第一次公开阐释了华为选择走智选车模式的逻辑。 一年之后&#xff0c;伴随问界M7改款、问界M9上市&#xff0c;华为智选车模式的面貌已经发生了…

使用jenkins-pipeline进行利用项目文件自动化部署到k8s上

Discard old builds:丢弃旧的构建,目的是管理存储空间、提升性能以及保持环境整洁 Do not allow concurrent builds: 禁止并发构建是指同一时间内只允许一个构建任务执行,避免多个构建同时运行可能带来的问题 Do not allow the pipeline to resume if the controller resta…

信息系统项目管理师018:计算机网络(2信息技术发展—2.1信息技术及其发展—2.1.2计算机网络)

文章目录 2.1.2 计算机网络1.网络标准协议2.软件定义网络3.第五代移动通信技术 记忆要点总结 2.1.2 计算机网络 在计算机领域中&#xff0c;网络就是用物理链路将各个孤立的工作站或主机相连在一起&#xff0c;组成数据链路&#xff0c;从而达到资源共享和通信的目的。凡将地理…

SpringCloud搭建微服务之Micrometer分布式链路追踪

1. 概述 由于Spring Cloud Sleuth最新版本只支持Spring Boot 2.7.x&#xff0c;核心项目已经迁移到Micrometer Traceing项目&#xff0c;Spring Boot 3.x版本要实现分布式链路追踪需要集成Micrometer。更多详情可以参阅Micrometer官网 本文将以Spring Boot 3.2.x和Spring Clo…

HTML5球体下落粒子爆炸特效

HTML5球体下落粒子爆炸特效&#xff0c;源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 下载地址 HTML5球体下落粒子爆炸特效

抖音无水印视频关键词批量下载|视频下载工具

抖音无水印视频关键词批量下载操作说明 我们根据自己的需要开发了抖音视频批量下载工具&#xff0c;现在市面上的视频无水印工具只能通过单个视频链接进行提取&#xff0c;太不方便 所以我们延伸出了 不仅可以通过单个视频链接进行提取也可通过关键词进行视频搜索 进行批量和有…

TCP和UDP基础

tcp服务器及客户端链接 ucd服务器及客户端 机械臂控制 #include<myhead.h> #define SER_PORT 8888 #define SER_IP "192.168.117.92" int main(int argc, const char *argv[]) { //创建套接字 int cfdsocket(AF_INET,SOCK_STREAM,0); if(cfd-1…

Python环境下基于1D-CNN、2D-CNN和LSTM的一维信号分类

以简单的西储大学轴承数据集为例&#xff0c;随便你下载几个信号玩耍吧&#xff0c;我选了10个信号&#xff0c;分别求为正常状态&#xff0c;内圈&#xff08;轻、中和重度损伤&#xff09;&#xff0c;外圈&#xff08;轻、中和重度损伤&#xff09;&#xff0c;滚动体&#…