当前位置: 首页 > news >正文

JS生成指定范围内的随机数

一、业务需求

由于公司最近在申请ICP证书,需要做一个符合申请ICP证的电商平台网站,由于大多数据功能并不需要真实数据,所以网站上的大多数数据都是由前端去模拟的随机数据

二、预备知识

Math.random //函数生成一个[0, 1)范围内的随机数
Math.floor(n) //向下取整,返回一个n的整数部分的数
Math.ceil(n) //向上取整,返回一个大于等于n的最小整数

三、业务场景

//现有一个长度为5的包含5个用户信息的数组,需要随机取出数组中的其中一个对象
var users = [{ 
   name: '贾会亮',        
   phone: '18938919697',       
   qq: '348531467/3002745920',       
   wx: 'daxiong0514',        
   email: '348531467@qq.com',    
   address: '深圳市宝安区西乡臣田工业区2楼'  
  },{ 
   name: '宋嫦娥',        
   phone: '13613040547',       
   qq: '2646720073',       
   wx: '13613040547',      
   email: '2646720073@qq.com',      
   address: '广东省东莞市凤岗镇雁田村长塘工业园怡红路物流园B栋2楼'     
 },{       
   name: '黄丽',       
   phone: '13680222498',     
   qq: '3521806322',   
   wx: '13680222498',     
   email: 'TIEFU2018VIP@163.com',    
   address: '中国广东佛山市顺德区均安镇畅兴工业园生安路2号,528329'    
  },{       
   name: '窦小姐',    
   phone: '+86 153 2287 1043',    
   qq: '1526332481',    
   wx: '15322871043',     
   email: 'k494929466@lvtudianzi.cn',   
    address: '东莞市塘厦镇莲湖社区塘莲三街13号B栋'  
  },  
  {     
   name: '周奎奎 & 黄云祥', 
   phone: '13510845288 & 17688716770',    
   qq: '1056941156 & 776226678',    
   wx: '13510845288 & 17688716770',  
   email: '776226678@qq.com',     
   address: '深圳市龙华新区大浪街道华辉路同胜科技大厦A座803-804'  
  }]  复制代码


四、过程分析

1、数组长度为5,所以我们只需要随机出[0, 4]中的任意一个整数a作为数组的索引去随机取出一个对象,也就是 var user = users[a]
2、我们知道Math.random()能够生成[0,1)的随机数,那么Math.random() * 4就能生成[0, 4)的随机数了,但是取不到边界值4,那么我们再将Math.random() * 5就能生成[0, 5)的随机数,这样我们就能取到[0, 4]范围内的数了,最后再通过Math.floor函数来实现Math.floor( Math.random() * 5 ) ,最终生成的随机数将在[0, 4]范围内的整数了

 var users = [{   
    name: '贾会亮',    
    phone: '18938919697',     
    qq: '348531467/3002745920',     
    wx: 'daxiong0514',   
    email: '348531467@qq.com',    
    address: '深圳市宝安区西乡臣田工业区2楼'  
   },{     
    name: '宋嫦娥',     
    phone: '13613040547',    
    qq: '2646720073',   
    wx: '13613040547',  
    email: '2646720073@qq.com', 
    address: '广东省东莞市凤岗镇雁田村长塘工业园怡红路物流园B栋2楼'   
   },{      
    name: '黄丽',     
    phone: '13680222498',    
    qq: '3521806322',   
    wx: '13680222498',    
    email: 'TIEFU2018VIP@163.com',  
    address: '中国广东佛山市顺德区均安镇畅兴工业园生安路2号,528329'  
   },{     
    name: '窦小姐',    
    phone: '+86 153 2287 1043', 
    qq: '1526332481',     
    wx: '15322871043',   
    email: 'k494929466@lvtudianzi.cn', 
    address: '东莞市塘厦镇莲湖社区塘莲三街13号B栋'  
   },{   
     name: '周奎奎 & 黄云祥',    
     phone: '13510845288 & 17688716770',   
     qq: '1056941156 & 776226678',    
     wx: '13510845288 & 17688716770',    
     email: '776226678@qq.com',     
     address: '深圳市龙华新区大浪街道华辉路同胜科技大厦A座803-804'  
   }]
   var user = users[Math.floor( Math.random() * 5 )] // 0, 1, 2, 3, 4复制代码


五、进一步分析生成[n, m]之间的整数

1、假如我们现在要生成一个[70, 80]范围内的整数,我们可以这样思考,我们可以将这个域的最大值和最小值都减去70,那么我们只要生成一个[0, 10]范围内的整数,最后的结果再加上70(70也就是域的最小边界值)就好了,代码如下:

function getRandom (n, m) {
    var num = Math.floor(Math.random() * (m - n + 1) + n)
    return num
}

var number = getRandom(70, 80) 
console.log(number) //70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80复制代码


相关文章:

  • Windows UDP socket recvfrom返回10054错误的解决办法
  • 关于安排
  • C#委托
  • 力扣(LeetCode)965
  • 快速上手git
  • Android开发最佳学习路线图
  • 相对友好的 AVL Tree 教程
  • oracle中sql优化读书笔记1-优化器
  • SpringBoot之devtools热部署
  • Web自动化测试框架Watir(基于Ruby) - 第2章 使用Watir写自动化测试脚本
  • JSP 动作元素
  • Git很好的教程
  • 效果逆天的通用语言模型GPT 2.0来了,它告诉了我们什么?
  • [转]页面换肤功能浅析
  • 域名在QQ微信被拦截怎么办 怎么样才能让被微信屏蔽的网址正常访问使用
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 3.7、@ResponseBody 和 @RestController
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • CSS实用技巧
  • IDEA 插件开发入门教程
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java到底能干嘛?
  • 大型网站性能监测、分析与优化常见问题QA
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 Docker 部署 Spring Boot项目
  • 小而合理的前端理论:rscss和rsjs
  • 学习JavaScript数据结构与算法 — 树
  • 学习使用ExpressJS 4.0中的新Router
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​Java并发新构件之Exchanger
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (2)(2.10) LTM telemetry
  • (3)选择元素——(17)练习(Exercises)
  • (js)循环条件满足时终止循环
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (四)鸿鹄云架构一服务注册中心
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (译) 函数式 JS #1:简介
  • (译)2019年前端性能优化清单 — 下篇
  • (转)c++ std::pair 与 std::make
  • (转)Linux下编译安装log4cxx
  • . Flume面试题
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net Stream篇(六)
  • .net web项目 调用webService
  • .net 反编译_.net反编译的相关问题
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .skip() 和 .only() 的使用
  • @DataRedisTest测试redis从未如此丝滑
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt