我正在使用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?
答案 0 :(得分:0)
输出以什么方式与Math.random()不同?
Math.random使用隐式引擎特定算法,该算法没有播种功能,而您的实现是独立于平台且显式播种的。
另外,为什么2 ^ 32,4294967296需要除以2?
它用于确保两个的倍数,因此随机数生成器不会在奇数上失败。
<强>参考强>