Skip to content

Latest commit

 

History

History
45 lines (30 loc) · 1.4 KB

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

File metadata and controls

45 lines (30 loc) · 1.4 KB

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

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

有一篇很棒的文章 Lots of Ways to Use Math.random() in JavaScript 介绍了如何使用 Math.random 实现各种很酷炫的示例。