繁体   English   中英

如何在JavaScript和Python中生成相同的随机数?

[英]How can I generate the same random number in JavaScript and Python?

在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中使用给定的种子获得相同的随机数?

当我将Python输出与JavaScript输出进行比较时,此库/插件对我有用。

https://github.com/davidbau/seedrandom

如果不需要加密安全的伪随机数生成器,则可以使用正弦函数的小数来使用类似的方法。

在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)之类的东西,这取决于您是否找到足够好的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM