可以在JavaScript中使用Math.random()*80生成整数吗?

可以在JavaScript中使用Math.random()*80生成整数吗?,javascript,random,Javascript,Random,我知道即使可以,概率也很小,但理论上可能吗?是的,可能。从节点控制台: > for(var i = 0; i < 1000000000; i++) { ... var rn = Math.random() * 80 ... if(rn == Math.round(rn)) { ..... console.log('success') ..... break ..... } ... } success undefined > (变量i=0;i{ …v

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

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

> for(var i = 0; i < 1000000000; i++) {
...   var rn = Math.random() * 80
...   if(rn == Math.round(rn)) {
.....     console.log('success')
.....     break
.....   }
... }
success
undefined
>
(变量i=0;i<100000000;i++)的
>{
…var rn=Math.random()*80
…如果(rn==Math.round(rn)){
..…console.log('success')
打破
.....   }
... }
成功
未定义
>
?是的:

您想要一个介于0和80之间的整数

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

编辑您还可以向下和向上环绕(
地板
天花板
):

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

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

Ceil有,例如:76,8=>77

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

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

那么,有没有IEEE 754的数字在乘以80时变成整数

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

因此,当乘以80时,至少有15个不同的值将得到一个整数


随机数产生器真的能产生这些值吗?我不能说。这将取决于javascript实现。

Math.random()*80 | 0
的答案很可能是您正在寻找的答案,但应该注意,根据ECMAScript标准,JS中的所有数字都是
double
[…],只有一种数字类型:双精度64位二进制格式IEEE 754值(介于-(253-1)和253-1之间的数字)。整数没有特定的类型。[…]
。我认为问题是指数学整数(非小数)的生成,而不是整数类型。