是否可以在JavaScript中使用Math.random()*80来生成一个整数?

Is it possible to generate an integer by using Math.random()*80 in JavaScript?

本文关键字:整数 一个 JavaScript 是否 random Math      更新时间:2023-09-26

我知道即使可以,概率也很小,但理论上可能吗?

根据ECMAScript标准,只有一种数字类型:双精度64位二进制格式IEEE 754值(介于-(253 -1)和253 -1之间的数字)。整数没有特定的类型

那么,是否有任何IEEE 754数字在乘以80时变成整数?

80 = 2*2*2*5。由于该值是使用二进制分数存储的,因此数字n/16(其中n在[1-15]的范围内)都可以精确地表示。它们乘以80也会变成整数。

所以至少有15个不同的值乘以80会得到整数

随机数生成器实际上可以产生这些值中的任何一个吗?我不能说。这取决于javascript的实现

…? 是:

你想要一个介于0到80之间的整数吗?

var my_integer = parseInt (""+ 80 * Math.random());

EDIT也可以将(floor, ceil)四舍五入&:

地板,例如:76,8=>76

var my_integer = Math.floor( parseInt (""+ 80 * Math.floor()));

var my_integer = Math.ceil(parseInt (""+ 80 * Math.ceil()));

这是可能的。从节点控制台:

> for(var i = 0; i < 1000000000; i++) {
...   var rn = Math.random() * 80
...   if(rn == Math.round(rn)) {
.....     console.log('success')
.....     break
.....   }
... }
success
undefined
>