生成随机数
Jioho 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
2
3
4
5
6
# 所以生成[0,max]到任意数的随机数,公式如下:
// max - 期望的最大值
parseInt(Math.random() * (max + 1), 10)
// 或
Math.floor(Math.random() * (max + 1))
1
2
3
4
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14