1

我需要在我正在开发的游戏中获得一个非常随机的数字。问题是 Math.random() 得到完全相同的结果,因为它基于时间戳,我使用它来随机定位游戏对象,我需要立即获得随机位置。有比 Math.random() 更好的方法吗?

https://github.com/suprMax/monkyTime/blob/master/static/monkytime.js#L201

对象的位置非常接近。我试图让它更随机地从请求动画帧中窃取高精度时间,但无济于事。

4

3 回答 3

1

随机生成器从当前时间播种并不会使其返回相同结果的事实是后续调用。每次调用它时,它都会为自己播种新值,它只是受时钟影响的初始值。

于 2012-05-29T13:49:06.327 回答
0

如果Math.random()不够随机(它是伪随机数生成器),则使用真正的随机生成器。

它需要使用一些远程数据来获得足够的熵(例如鼓风机中的球、白噪声等)。您可能需要为此创建或使用现有服务。

于 2012-05-29T13:45:45.230 回答
0

大多数浏览器中的伪随机数生成器应该足以在游戏中定位对象。当然,如果您正确实施它,您不应该一遍又一遍地得到相同的结果。

如果您绝对需要结果不可预测(例如密码学),您需要研究密码安全的 PRNGs

于 2012-05-29T13:52:09.713 回答