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

时间:2015-09-02 09:03:29

标签: javascript random

我知道即使它可以,概率也会很小但理论上是否可能?

3 个答案:

答案 0 :(得分:1)

  

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

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

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

因此,至少有15个不同的值会在乘以80时产生整数。

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

答案 1 :(得分:0)

......?是的:

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

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

编辑您还可以向下舍入(floorceil)& amp;起来:

发言,例如: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()));

答案 2 :(得分:-1)

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

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