随机产生去重数组
时间:2022-05-04
本文章向大家介绍随机产生去重数组,主要内容包括需求、原理、随机产生去重数组 方法1、随机产生去重数组 方法2、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
HTML5学堂:数组、字符串、正则,三者应该说是众多开发者的死敌,方法很多,单纯的记住了没有意义,只有灵活应用才是王道~因此,对于此类问题,重要的是基本思路,根据思路回忆学过的知识,之后应用即可。
需求
总共需要在100个数字中,随机抽取10个不重复的数字。
原理
在最初时,设置了一个temp数组,所有的数组元素都是没有定义的。每次生成时使用随机函数以及数学的取整函数进行处理,之后进行判断,判断temp数组中的这个值是否存在。如果不存在,那么将这个数组的元素设置为1(也就是设置为存在状态),之后将获取到的这个num值push到数组当中,再将控制循环的变量加1。从而更好的控制while循环。
第二段代码比第一段代码的优势在于:第一段代码每次需要将当前新值与之前所有的值相对比,而且即便是生成的数字和之前数字不同,但仍要进行比较。也就是说,从第一个数到最后一个数,这10个数字的生成,如果是10个数字本身都没有任何重复的话(也就是直接符合要求),那么需要执行if判断语句10次,执行比较45次。而对于第二种方法,如果10个数字本身没有任何重复的话(也就是直接符合要求),那么只需要执行10次的判断语句,而不需要执行其他内容。从代码的运行上来说,性能要更好~~~
随机产生去重数组 方法1
var result = [];
for(var j = 0; j < 10; j++) {
result[j] = Math.round( Math.random() * 100 );
if(j > 0) {
for(var m = j - 1; m >= 0; m--) {
if(result[j] == result[m]) {
j--;
break;
}
}
}
}
随机产生去重数组 方法2
代码中for循环和if语句嵌套的层次太多,如果不是随机取10个数,而是取更多的数的话,这样for循环的次数太多了,代码执行的时间也会变长。所以思考使用空间换时间的方式,来简化代码,并且减少语句的嵌套,代码如下:
var result = [];
var temp = [];
var len = 0;
var num;
while(len < 10){
num = Math.round( Math.random() * 100 );
if(!temp[num]) {
temp[num] = 1;
result.push(num);
len++;
}
}
欢迎沟通交流~HTML5学堂
- 针对事件驱动架构的Spring Cloud Stream
- Spring的三种Circuit Breaker
- Spring5以来注册Bean的各种姿势,特别最后的纯编码注册值得尝试
- ONOS一键安装脚本
- Spring 5 新增全新的reactive web框架:webflux
- 认证鉴权与API权限控制在微服务架构中的设计与实现(一)
- 在服务器上利用docker快速部署博客—jpress
- NSQ深入与实践
- 排序算法性能比较
- 上一期前端面试题整理答案
- 自己动手用Socket写一个HttpClient发送GET请求
- Ryu:模块间通信机制分析
- 异地双活实践笔记
- OpenStack Neutron中的DVR简介与OVS流表分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Rust日报】2020-08-31 easy_rust 正式完成了
- Python测试开发django4.templates模板配置
- Python测试开发django5.templates模板变量传参
- 在 CLion 中创建基于 CubeMX 的 STM32 工程
- 【Rust日报】 2020-09-03 Google - XLS 加速硬件合成
- 算法篇:栈之常见题型
- 算法篇:栈之字符串相关题目
- redis的安装与启动以及注意事项
- 算法篇:利用map求数组交集
- 分布式锁:一、基础知识
- 钓鱼城杯2020 部分WriteUp
- setbit的实际应用
- 猿实战09——实现你设计的类目系统
- redis的事物
- redis的持久化