有没有办法在JavaScript中生成指定范围内的随机数(例如1到6:1,2,3,4,5或6)?
有没有办法在JavaScript中生成指定范围内的随机数(例如1到6:1,2,3,4,5或6)?
如果你想得到1到6之间,你会计算:
Math.floor(Math.random() * 6) + 1
哪里:
function randomIntFromInterval(min,max)
{
return Math.floor(Math.random()*(max-min+1)+min);
}
它所做的“额外”是它允许以1开头的随机间隔。 因此,您可以获得10到15之间的随机数。灵活性。
来自 Mozilla的 开发者网络文档:
// Returns a random integer between min (include) and max (include)
Math.floor(Math.random() * (max - min + 1)) + min;
有用的例子:
// 0 -> 10
Math.floor(Math.random() * 11);
// 1 -> 10
Math.floor(Math.random() * 10) + 1;
// 5 -> 20
Math.floor(Math.random() * 16) + 5;
// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;
其他方案:
(Math.random() * 6 | 0) + 1
~~(Math.random() * 6) + 1
Math.random()函数返回一个浮点伪随机函数 数字在[0,1]范围内;也就是说,从0(含)到最高但不是 包括1(独家)
让我们 add
该 min
randomly
从 0
至 max-min
min
+ 0 *(max
- min
)= 分
min
+ 1 *(max
- min
)= 最大
min
+ r *(max
- min
)= X,哪里 X 有范围的 分 <= X < 最大
以上结果 X 是一个随机数字。但是由于Math.random(),我们的左边界是包容性的,右边界是独占的。要包含我们的右边界,我们将右边界增加1并将结果置于底层。
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max+1 - min))
}
generateRandomInteger(-20, 20)
;
var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;
或者,在 下划线
_.random(min, max)
的jsfiddle: https://jsfiddle.net/cyGwf/477/
随机整数:获取之间的随机整数 min
和 max
,使用以下代码
function getRandomInteger(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
随机浮点数:获取之间的随机浮点数 min
和 max
,使用以下代码
function getRandomFloat(min, max) {
return Math.random() * (max - min) + min;
}
参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
数学不是我的强项,但我一直致力于一个项目,我需要在正面和负面之间产生大量的随机数。
function randomBetween(min, max) {
if (min < 0) {
return min + Math.random() * (Math.abs(min)+max);
}else {
return min + Math.random() * max;
}
}
例如
randomBetween(-10,15)//or..
randomBetween(10,20)//or...
randomBetween(-200,-100)
当然,您还可以添加一些验证,以确保不使用除数字之外的任何其他内容。还要确保min始终小于或等于max。
我写了更灵活的函数,可以给你随机数,但不仅仅是整数。
function rand(min,max,interval)
{
if (typeof(interval)==='undefined') interval = 1;
var r = Math.floor(Math.random()*(max-min+interval)/interval);
return r*interval+min;
}
var a = rand(0,10); //can be 0, 1, 2 (...) 9, 10
var b = rand(4,6,0.1); //can be 4.0, 4.1, 4.2 (...) 5.9, 6.0
修正版。