如何在JavaScript和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

在Python中,如果我使用以下代码:

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
。我做错了吗?