use*_*294 14 javascript random math floating-point integer
通常这是你在javascript中获得随机数的方式.
Math.random();
Run Code Online (Sandbox Code Playgroud)
然而,当涉及生成随机整数时,这种方法似乎效率低下.
首先,随机函数必须生成一个随机小数,如0.1036098338663578,然后它必须乘以一个合适的范围(10.464593220502138).最后,floor函数减去小数以产生结果(在本例中为10).
var random_integer = Math.floor(Math.random()*101);
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法在JavaScript中生成随机整数?
我用它来创建一个画布HTML5游戏.FPS大约是50,除了生成随机数之外,我的代码已经过优化.
Dag*_*bit 25
这段代码更快......输入.
var random_integer = Math.random()*101|0;
Run Code Online (Sandbox Code Playgroud)
但它不适用于大量数字.
(它不会运行得更快,至少不会在chrome中运行.)
如果你事先生成随机数,你可以在游戏中获得更快的速度.
for (var i=1e6, lookupTable=[]; i--;) {
lookupTable.push(Math.random()*101|0);
}
function lookup() {
return ++i >= lookupTable.length ? lookupTable[i=0] : lookupTable[i];
}
Run Code Online (Sandbox Code Playgroud)
lookup将通过具有一百万个随机整数的数组旋转.这是更快比调用random和floor(当然,有一个"加载时间"处罚预先从生成查找表).