0

我正在使用 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?

4

1 回答 1

0

输出与 Math.random() 有何不同?

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

还有,为什么 2^32, 4294967296, 需要除以 2?

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

参考

于 2014-07-18T17:39:55.227 回答