JavaScript中随机数方法 Math.random()
作者:??Shrimpsss???? 发布时间:2024-04-10 13:56:30
标签:JavaScript,随机数,Math.random()
前言:
我们学习项目的时难免遇到一些问题,比如;遇到一个功能需要随机返回多条不重复的数据,也可以是拿了就用,下次再需要时已经忘记如何使用了;虽然接触使用的场景很少,但也有必要单独拿出来讲一讲
定义
js中的生成随机数操作是基于 Math
方法下的 random()
方法
Math.random() : 随机获取范围内的一个数 ( 精确到小数点后14位 )
基础写法
随机生成一个 0 ~ 1 之间的数:
// 语法: Math.random()
生成指定范围内的随机数
生成 小于 m 的随机数(含小数):
// 语法: Math.random() * m
Math.random() * 60
生成 小于m 的整数:
可以使用 parseInt
去除小数点的形式将生成的随机数转换为整数
// 语法: Math.random() * m
parseInt(Math.random()* 60)
生成向下取整的随机整数:
使用Math
方法下的floor
属性进行舍弃小数向下取整, 当然你也可以使用 Math.ceil
向上取整
// 语法: Math.random() * m
Math.floor(Math.random()* 60)
生成两个数之间的随机数
表示生成 n~m+n 之间的随机数:
// 语法: Math.random() * m + n
// 范围:n ~ m+n
Math.random() * 10 + 8 // 8 ~ 18
生成 -n~m+n 之间的随机数:
// 语法: Math.random() * m - n
// 范围:-n ~ m+n
Math.random() * 10 - 8 // -8 ~ 2
生成 -m~0 之间的随机数:
// 语法: Math.random() * m - m
// 范围:-m - 0
Math.random() * 10 - 10 // -10 - 0
生成 n~m 之间的随机整数(包括n与m):
// 语法: Math.floor(Math.random() * (m - n)) + n
// 范围:n ~ m
Math.floor(Math.random() * (8 - 100)) + 100 // 8~100
常用场景
看完语法,接下来讲一个我项目中用到的场景 - 热榜,将每次随机获取3条不重复的热门数据
function random_pick(list, target) {
/**
* @param {number[]} list - 数据
* @param {number} target - 获取的条数
*/
// 1. 保存热榜
let hot = [];
// 2. 保存热榜的索引
for (let index = 0; index < list.length; index++) {
// 3. 如果热榜采集完,则直接返回
if (hot.length >= target) return hots(hot);
// 4. 每次随机取出一个数
let r = Math.floor(Math.random() * list.length);
// 5. 如果随机数不在热榜里,则加入热榜
if (hot.indexOf(r) == -1) {
hot.push(r);
}
}
// 热榜过滤函数
function hots(params) {
return params.map(item => { return list[item] });
}
}
let r = random_pick([22, 33, 44, 55, 66, 77, 88], 3)
来源:https://juejin.cn/post/7102024501260451848


猜你喜欢
- 前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。是的。Golang中也有接口这玩意儿。1.为什么需要接口?多数情况下,数
- 本文主要向大家分享了Python编程中通过Django模块实现用户注册以及邮箱验证功能的简单介绍及代码实现,具体如下。用户注册:类似于用户登
- 最近遇到了Python访问SqlServer的问题,这里总结下。一、Windows下配置Python访问Sqlserver环境:Window
- 如下所示:#统计某文件夹下的所有csv文件的行数(多线程)import threadingimport csvimport osclass
- 换了N种字符串连接的方法,终于连接上去了。 共享下用的 Provider=SQLOLEDB.1; User ID=sa; Password=
- 本文将以Mysql举例,介绍sqlalchemy的基本用法。其中,Python版本为2.7,sqlalchemy版本为1.1.6。一. 介绍
- psutil是个跨平台库,能够轻松实现获取系统运行的进程和系统利用率,包括CPU、内存、磁盘、网络等信息。它主要应用于信息监控,分析和限制系
- 前言这期文章我就为大家介绍关于python的艺术美——画图神器在数学中有一种美,叫几何美,我们又称为
- 最近忙成了狗,五六个项目堆在一起,头疼的是测试还失惊无神的给我丢来一个几十甚至上百M的日志文件,动不动就几十上百万行,就算是搜索也看得头昏眼
- 1. Python的figure参数主要有:def figure(num=None, # autoincrement if None, el
- 可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/11/03/python-m
- 写了一个小巧的jquery拾色工具,代码简单得不得了,只有这么几行:(function($){ $.fn.pickColor=fu
- 代码如下Control:from django.conf.urls import patterns, include, urlfrom dj
- queue模块简介queue模块是Python内置的标准模块,模块实现了三种类型的队列,它们的区别仅仅是条目取回的顺序,分别由3个类进行表示
- 类似如下: select A.key,B.key,C.key from A,B,C where trim(A.key)=trim(B.fk)
- 前言在之前实现的 JSON 解析器中当时只实现了将一个 JSON 字符串转换为一个 JSONObject,并没
- 如何用METADATA替换ADOVBS.INC? 在ASP中,使用组件时,如ADO,得先包含
- 描述cmp() 方法用于比较两个列表的元素。语法cmp()方法语法:cmp(list1, list2)参数list1 -- 比较的列表。li
- python 3.x 环境下,使用h5py加载HDF5文件,查看keys,如下:>>> import h5py>&g
- this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。和其他