有没有办法用JavaScript生成指定范围内的随机数?
例如:指定范围从1到6,随机数可以是1、2、3、4、5或6。
有没有办法用JavaScript生成指定范围内的随机数?
例如:指定范围从1到6,随机数可以是1、2、3、4、5或6。
当前回答
此函数可以生成介于(包括)最小值和最大值之间的随机整数:
function randomNumber(min, max) {
if (min > max) {
let temp = max;
max = min;
min = temp;
}
if (min <= 0) {
return Math.floor(Math.random() * (max + Math.abs(min) + 1)) + min;
} else {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
}
例子:
randomNumber(-2, 3); // can be -2, -1, 0, 1, 2 and 3
randomNumber(-5, -2); // can be -5, -4, -3 and -2
randomNumber(0, 4); // can be 0, 1, 2, 3 and 4
randomNumber(4, 0); // can be 0, 1, 2, 3 and 4
其他回答
其他解决方案:
(数学随机()*6|0)+1~~(数学随机()*6)+1
联机尝试
此函数可以生成介于(包括)最小值和最大值之间的随机整数:
function randomNumber(min, max) {
if (min > max) {
let temp = max;
max = min;
min = temp;
}
if (min <= 0) {
return Math.floor(Math.random() * (max + Math.abs(min) + 1)) + min;
} else {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
}
例子:
randomNumber(-2, 3); // can be -2, -1, 0, 1, 2 and 3
randomNumber(-5, -2); // can be -5, -4, -3 and -2
randomNumber(0, 4); // can be 0, 1, 2, 3 and 4
randomNumber(4, 0); // can be 0, 1, 2, 3 and 4
实例
返回1到10之间的随机数:
Math.floor((Math.random() * 10) + 1);
结果可能是:3.
试试看:这里
--
或使用lodash/descore:
_.随机(最小值,最大值)
文件:-罗达什-不受欢迎的
TL;博士
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max - min + 1))
}
要获得随机数generateRandomInteger(-20,20);
下面的解释
整数-不是分数的数字;整数
我们需要得到一个随机数,比如最小值和最大值之间的X。十、 min和max都是整数
即最小<=X<=最大
如果我们从方程中减去min,这相当于
0<=(X-最小)<=(最大-最小)
现在,让我们将其与随机数r相乘这是
0<=(X-分钟)*r<=(最大-分钟)*r
现在,让我们把min加回到等式中
最小<=最小+(X-最小)*r<=最小值+(最大-最小)*r
对于任何给定的X,只有当r的范围为[0,1]时,上述方程才满足。对于r的任何其他值,上述方程都不满足。
在此处了解范围[x,y]或(x,y)的更多信息
我们的下一步是找到一个函数,该函数总是产生范围为[0,1]的值
现在,r的范围,即[0,1]与Javascript中的Math.random()函数非常相似。不是吗?
函数的作用是:返回浮点伪随机范围[0,1)内的数字;即从0(含0)到但不包括1(不含)
使用Math.Random()的随机函数0<=r<1
注意,在Math.random()中,左边界是包含的,右边界是排他的。这意味着min+(max-min)*r的取值范围为[min,max)
为了包括我们的右边界,即[min,max],我们将右边界增加1,并将结果下限。
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max - min + 1))
}
要获得随机数
generateRandomInteger(-20,20);
基本上像骰子一样返回1-6,
return Math.round(Math.random() * 5 + 1);