use*_*929 17 javascript random numbers
可能重复:
在特定范围内的Javascript中生成随机数?
我怎样才能得到一个随机值,例如,从-99到99,不包括0?
Lit*_*eas 40
var num = Math.floor(Math.random()*99) + 1; // this will get a number between 1 and 99;
num *= Math.floor(Math.random()*2) == 1 ? 1 : -1; // this will add minus sign in 50% of cases
Run Code Online (Sandbox Code Playgroud)
这将返回您想要的
function getNonZeroRandomNumber(){
var random = Math.floor(Math.random()*199) - 99;
if(random==0) return getNonZeroRandomNumber();
return random;
}
Run Code Online (Sandbox Code Playgroud)
这是一个实用的小提琴
为了为将来的读者做出贡献,用户@MarkDickinson对我发布的第一个代码做出了一些确实有意义的贡献,而在注释中进行了一些辩论,我决定在使用Math.floor()
和Math.round()
函数之间进行快速比较以返回该值,这又是一个麻烦。想要。
第一个场景:使用var random = Math.round(Math.random()*198) - 99;
(我的第一个建议)
function getNonZeroRandomNumberWithMathRound(){
var random = Math.round(Math.random()*198) - 99;
if(random==0) return getNonZeroRandomNumber();
return random;
}
Run Code Online (Sandbox Code Playgroud)
第二种情况:使用var random=Math.floor(Math.random()*199) - 99;
(标记建议)
function getNonZeroRandomNumberWithMathFloor(){
var random = Math.floor(Math.random()*199) - 99;
if(random==0) return getNonZeroRandomNumber();
return random;
}
Run Code Online (Sandbox Code Playgroud)
方法
由于辩论时间很短,因此我选择了fiddle.net进行比较。
该测试包括运行上述功能100.000次,然后检索极限数99
与-99
另一个数相对应出现的次数,例如33
和-33
。
然后,测试将给出一个简单的输出由来自露面的百分比99
和-99
和的出场率33
和-33
。
它将用于Webkit实现,Safari 6.0.2
并从此答案给出输出,但是任何人都可以在fiddle.net上使用您喜欢的浏览器进行测试。
第一种情况的结果:
第二种情况的结果:
结果可以在这里看到:http : //jsfiddle.net/brunovieira/LrXqh/