Math.random与其他随机算法

时间:2014-01-10 09:20:37

标签: node.js debugging prng native-methods random-seed

我正在使用node.js客户端应用程序模糊远程服务器。

在node.js客户端中使用Math.random时,我可以~100%的时间使远程服务器崩溃。但是,我已经尝试了几个确定性的播种随机数生成器,但两者都无法崩溃。

我怀疑它是由于Math.random或我测试过的种子生成器的特质所致。

这是我尝试过的种子生成器之一:

var x = 123456789, y = 362436069, z = 521288629, w = 88675123;
function random() { // See http://stackoverflow.com/a/6275875
    var t;
    t = x ^ (x << 11);
    x = y; y = z; z = w;
    return (w = w ^ (w >> 19) ^ (t ^ (t >> 8)))/(4294967296/2);
}

输出以什么方式与Math.random()不同?另外,为什么2 ^ 32,4294967296需要除以2?

1 个答案:

答案 0 :(得分:0)

  

输出以什么方式与Math.random()不同?

Math.random使用隐式引擎特定算法,该算法没有播种功能,而您的实现是独立于平台且显式播种的。

  

另外,为什么2 ^ 32,4294967296需要除以2?

它用于确保两个的倍数,因此随机数生成器不会在奇数上失败。

<强>参考