有没有办法用JavaScript生成指定范围内的随机数?

例如:指定范围从1到6,随机数可以是1、2、3、4、5或6。


当前回答

var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;

其他回答

实例

返回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);

尝试使用:

函数随机(最小值,最大值){return Math.round((Math.random()*(Math.abs(max-min)))+min);}console.log(随机(1,6));

这对我来说很有用,并生成类似Python的random.randit标准库函数的值:


function randint(min, max) {
   return Math.round((Math.random() * Math.abs(max - min)) + min);
}

console.log("Random integer: " + randint(-5, 5));

这已经晚了九年,但randojs.com让这成为了一个简单的一行:

rando(1, 6)

您只需要将其添加到html文档的头部,就可以轻松地使用随机性做任何事情。数组中的随机值、随机jquery元素、对象中的随机财产,甚至在需要时防止重复。

<script src="https://randojs.com/1.0.0.js"></script>