随机理解图表堆栈生成
问题描述:
我正在理解下面的逻辑。随机理解图表堆栈生成
function bumps(m) {
var values = [],
i,
j,
w,
x,
y,
z;
for (var i = 0; i < m; ++i) {
values[i] = 0.1 + 0.1 * Math.random();
}
for (var j = 0; j < 5; j++) {
x = 1/(0.1 + Math.random());
y = 2 * Math.random() - 0.5;
z = 10/(0.1 + Math.random());
for (var i = 0; i < m; i++) {
w = (i/m - y) * z;
values[i] += x * Math.exp(-w * w);
}
}
for (var i = 0; i < m; i++) {
values[i] = Math.max(0, values[i]);
}
return values;
}
上面的代码是从http://bl.ocks.org/mbostock/3943967片段和上述函数用于在图形显示的URL显示在y轴上的随机系列堆栈。我想了解他们正试图在下面
x = 1/(0.1 + Math.random());
y = 2 * Math.random() - 0.5;
z = 10/(0.1 + Math.random());
如何解释或理解数学/逻辑上颠簸方法上面的操作呢?请帮助我理解这一点。
答
我想这是JAVASCRIPT,我不使用,所以我可能是错的,但:
Math.random();
应该在区间<0,1>
所以返回伪随机值:
x = 1/(0.1 + Math.random());
x = 1/(0.1 + <0,1>);
x = 1/<0.1,1.1>;
x = <0.909,10.0>;
y = 2 * Math.random() - 0.5;
y = 2 * <0,1> - 0.5;
y = <0,2> - 0.5;
y = <-0.5,+1.5>;
z = 10/(0.1 + Math.random());
z = 10/(0.1 + <0,1>);
z = 10/<0.1,1.1>;
z = <9.09,100>;
因此,代码只是以特定间隔产生伪随机变量
x = <+0.909,+ 10.0>;
y = <-0.500,+ 1.5>;
z = <+9.090,+100.0>;
你能描述它的效果吗?这将有助于看到代码的想法。 – Yunnosch