如何在JavaScript和Python中生成相同的随机数?
在Python中,如果我使用以下代码:如何在JavaScript和Python中生成相同的随机数?,javascript,python,random,mersenne-twister,Javascript,Python,Random,Mersenne Twister,在Python中,如果我使用以下代码: import random random.seed(123) print(random.random()) 第一个随机数始终是0.052363598850944326,因为每次运行程序时,我都给它相同的种子 JavaScript没有使用种子的内置方式。我尝试了一个名为的JavaScript脚本,因为Python使用的是PRNG类型。但是,即使我使用相同的种子,我也会得到与Python不同的结果 var m = new MersenneTwister(12
import random
random.seed(123)
print(random.random())
第一个随机数始终是0.052363598850944326
,因为每次运行程序时,我都给它相同的种子
JavaScript没有使用种子的内置方式。我尝试了一个名为的JavaScript脚本,因为Python使用的是PRNG类型。但是,即使我使用相同的种子,我也会得到与Python不同的结果
var m = new MersenneTwister(123);
m.genrand_int32();
该代码在第一次运行时将始终返回0.6964691872708499
如何使用给定的种子在Python和JavaScript中获得相同的随机数?当我比较Python输出和JavaScript输出时,这个库/插件对我很有用
如果您不需要加密安全的伪随机数生成器,您可以使用类似的方法,使用正弦函数的小数 在python中:
import math
def simple_random(precision=10000):
i = 1
while 1:
x = math.sin(i) * precision
yield x - math.floor(x)
i += 1
在Javascript中:
var i = 1;
function simple_random(precision=10000) {
x = Math.sin(i++) * precision;
return x - Math.floor(x);
}
如果你想改变种子,你可以使用类似sin(a*i+b)的东西,而不是sin(i)或a*sin(i+b),这取决于你找到足够好的东西。因为你至少有一个种子的源代码,把它翻译成Python,如果你做得对,产生的数字应该是一样的;document.write(Math.random())代码>,我得到了
0.0470355545534303387
。我做错了吗?