在 JavaScript 中获取随机数的最佳方法是什么?

What is the best way to get random number in JavaScript

本文关键字:最佳 方法 是什么 取随机数 JavaScript      更新时间:2023-09-26

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

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

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

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

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

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

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

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