JS到底是如何处理随机数的范围的?

201 阅读1分钟

Math.random

用来获取在[0,1)范围内的随机数。

会配合Math.floor()来对随机数进行取整(向下取整)。

[min,max]的实现

那如何实现随机获取从minmax的整数呢?

实现代码

Math.floor(Math.random() * (max - min + 1) + min)

实现原理(过程)

  1. 目标:[0,1) > [min,max]
  2. 赋最大值max[0,1)*max=[0,max)
  3. 赋最小值min[0,1)*max+min=[min,max+min)
  4. 处理最大值max[0,1)*(max-min+1)+min=[min,max+1)=[min,max]

由于要对随机数进行向下取整,所以要在处理最大值max那一步,对max进行+1处理。