天天看点

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

使用

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))
           

继续阅读