我需要在我正在制作的游戏中获得一个非常随机的数字。问题是Math.random()得到了完全相同的结果,因为它基于时间戳,我用它来随机定位游戏对象,我需要立即获得随机位置。 有比Math.random()更好的方法吗?
https://github.com/suprMax/monkyTime/blob/master/static/monkytime.js#L201
物体的位置非常接近。我试图让它更随意地从请求动画帧中窃取高精度时间,但无济于事。
答案 0 :(得分:1)
随机生成器从当前时间播种的事实不会使其返回相同的结果是后续调用。每次调用它时,它都将使用新值播种,它只是受时钟影响的初始值。
答案 1 :(得分:0)
如果Math.random()
不够随机(它是伪随机数生成器),那么使用真正的随机生成器。
需要使用一些远程数据来获得足够的熵(例如鼓风机中的球,白噪声等)。您可能需要为此创建或使用现有服务。
答案 2 :(得分:0)
大多数浏览器中的伪随机数生成器应足以在游戏中定位对象。当然,如果你已经正确地实施了它,你不应该一遍又一遍地得到相同的结果。
如果您绝对需要结果不可预测(例如加密),您需要查看cryptographically secure PRNGs。