可以在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之间的数字)。整数没有特定的类型。[…]
。我认为问题是指数学整数(非小数)的生成,而不是整数类型。