栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在JavaScript中生成特定范围内的随机整数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在JavaScript中生成特定范围内的随机整数?

一些示例:

function getRandomArbitrary(min, max) {    return Math.random() * (max - min) + min;}function getRandomInt(min, max) {    min = Math.ceil(min);    max = Math.floor(max);    return Math.floor(Math.random() * (max - min + 1)) + min;}

这是背后的逻辑。这是三个简单的规则:

Math.random()
返回
Number
介于0(含)和1(不含)之间的。所以我们有一个这样的间隔:

[0 .................................... 1)

现在,我们想要一个介于

min
(含)和
max
(不含)之间的数字:

[0 .................................... 1)[min .................................. max)

我们可以使用

Math.random
来获取[min,max)间隔中的对应对象。但是,首先我们应该通过
min
从第二个间隔中减去一点来解决这个问题:

[0 .................................... 1)[min - min ............................ max - min)

这给出:

[0 .................................... 1)[0 .................................... max - min)

我们现在可以申请

Math.random
,然后计算对应的对象。让我们选择一个随机数:

     Math.random()         |[0 .................................... 1)[0 .................................... max - min)         |         x (what we need)

因此,为了找到

x
,我们将执行以下操作:

x = Math.random() * (max - min);

不要忘记加

min
回去,这样我们就可以在[min,max)间隔中得到一个数字:

x = Math.random() * (max - min) + min;

这是MDN的第一个功能。第二个返回一个介于

min
和之间的整数
max
,包括两者。

现在,用于获取整数,您可以使用

round
ceil
floor

您可以使用

Math.round(Math.random() * (max - min)) +min
,但这会导致分布不均。这两种,
min
max
只有大约一半的机会卷:

min...min+0.5...min+1...min+1.5   ...    max-0.5....max└───┬───┘└────────┬───────┘└───── ... ─────┘└───┬──┘   ← Math.round()   min          min+1    max

max
从区间中排除,它有一个甚至更少的机会比辊
min

Math.floor(Math.random() * (max - min +1)) + min
您有一个完美均匀的分布。

min.... min+1... min+2 ... max-1... max.... max+1 (is excluded from interval)|        |        |         |        |        |└───┬───┘└───┬───┘└─── ... ┘└───┬───┘└───┬───┘   ← Math.floor()   min     min+1    max-1    max

您不能在该方程式中使用

ceil()
-1
,因为
max
现在滚动的机会要少一些,但是您也可以滚动(不需要的)
min-1
结果。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号