在Python中,如果我使用此代码:
import random
random.seed(123)
print(random.random())
第一个随机数始终为0.052363598850944326
,因为每次运行程序时我都会给它相同的种子。
JavaScript没有使用种子的内置方法。我已经尝试了一个名为mersenne-twister.js的JavaScript脚本,因为这是Python使用的PRNG类型。但即使我使用相同的种子,我得到的结果也不同于Python。
var m = new MersenneTwister(123);
m.genrand_int32();
该代码将在第一次运行时始终返回0.6964691872708499
。
如何使用给定的种子在Python和JavaScript中获取相同的随机数?
答案 0 :(得分:0)
当我将Python输出与JavaScript输出进行比较时,这个库/插件对我有用。
答案 1 :(得分:0)
如果您不需要加密安全的伪随机数生成器,您可以使用类似的东西,使用正弦函数的小数。
在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)这样的东西,你可以找到足够好的东西。< / p>