【发布时间】:2012-02-05 06:03:34
【问题描述】:
通常这是在 javascript 中获取随机数的方式。
Math.random();
但是,这种方法在生成随机整数时似乎效率低下。
首先,随机函数必须生成一个随机小数,例如0.1036098338663578,然后它必须乘以一个合适的范围(10.464593220502138)。最后, floor 函数减去小数以产生结果(在本例中为 10)。
var random_integer = Math.floor(Math.random()*101);
有没有更快的方法在 javascript 中生成随机整数?
编辑1:
我正在使用它来创建画布 HTML5 游戏。 FPS 大约为 50,我的代码除了生成随机数外,还进行了相当优化。
【问题讨论】:
-
“但是这种方法似乎效率低” - 你测量了吗?
-
您需要多快?使用上面的代码,我可以在我的旧笔记本电脑上在 500 毫秒内获得 1000 万个随机数。
-
在大多数语言中,您都需要一个随机数生成器,通过对一些素数进行播种和修改。然而,在 JavaScript 中,评估语言的开销比调用 Math.random() 之类的开销要多,这意味着原生调用几乎总是比您可以实现的任何东西都快。
-
尝试将画布宽度保存在 var 中,而不是每次都访问它。可能就是这么简单。
标签: javascript math random floating-point integer