生成一个指定范围内的随机数

使用 Math.random() 生成随机值,使用乘法将其映射到所需的范围。

const random = (min, max) => Math.floor(Math.random() * (max - min)) + min

为了方便理解,我们将该方法拆解一下:

const MIN = 1
const MAX = 4

// 用减法算出差值
const DELTA = MAX - MIN

const initialRandom = Math.random()

// 将随机数乘以差值
const multiplied = initialRandom * DELTA

// 使用 Math.floor 将其四舍五入
const floored = Math.floor(multiplied)

// 加上最小值,我们将其向上移动以完美匹配范围:
const answer = floored + MIN

此随机方法包括下限,但不包括上限。例如,random(10, 12) 将随机 10 或 11,但从不随机 12。

这是有意做的,以匹配 Math.random 以及 slice 等 JavaScript 方法的行为。

// 从 [10, 11, 12, 13] 中获取一个随机数
console.log(random(10, 14))

// 获取从 1 到 100(包含 100)的随机数
console.log(random(1, 101))

// 获取一个从 -10 到 10(包含 10)的随机数
console.log(random(-10, 11))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值