生成随机数

9/6/2020 Javascript

估计写完这篇,以后更加不会写随机数了,毕竟都是 cv

# 直接上公式

# 所以生成[1,max]的随机数,公式如下:

// max - 期望的最大值
parseInt(Math.random() * max, 10) + 1
// 或
Math.floor(Math.random() * max) + 1
// 或
Math.ceil(Math.random() * max)
1
2
3
4
5
6

# 所以生成[0,max]到任意数的随机数,公式如下:

// max - 期望的最大值
parseInt(Math.random() * (max + 1), 10)
// 或
Math.floor(Math.random() * (max + 1))
1
2
3
4

# 所以希望生成[min,max]的随机数,公式如下:

// max - 期望的最大值
// min - 期望的最小值
parseInt(Math.random() * (max - min + 1) + min, 10)
// 或
Math.floor(Math.random() * (max - min + 1) + min)
1
2
3
4
5

# 随机数 api 笔记

API 说明
Math.ceil(); 向上取整。
Math.floor(); 向下取整。
Math.round(); 四舍五入。
Math.random(); 0.0 ~ 1.0 之间的一个伪随机数。【包含 0 不包含 1】 //比如 0.8647578968666494
Math.ceil(Math.random()*10); 获取从 1 到 10 的随机整数 ,取 0 的概率极小。
Math.round(Math.random()); 可均衡获取 0 到 1 的随机整数。
Math.floor(Math.random()*10); 可均衡获取 0 到 9 的随机整数。
Math.round(Math.random()*10); 基本均衡获取 0 到 10 的随机整数,其中获取最小值 0 和最大值 10 的几率少一半。

因为结果在 0~0.4 为 0,0.5 到 1.4 为 1...8.5 到 9.4 为 9,9.5 到 9.9 为 10。所以头尾的分布区间只有其他数字的一半。

# 小拓展 - 生成[n,m]的随机整数

// 生成从minNum到maxNum的随机数
function randomNum(minNum, maxNum) {
  switch (arguments.length) {
    case 1:
      return parseInt(Math.random() * minNum + 1, 10)
      break
    case 2:
      return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
      break
    default:
      return 0
      break
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Last Updated: 5/9/2021, 10:45:03 PM