随机了解图表堆栈生成

时间:2017-10-09 05:11:56

标签: math d3.js charts

我想了解下面的逻辑。

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());

如何在数学上/逻辑上解释或理解bumps方法中的上述操作?请帮我理解一下。

1 个答案:

答案 0 :(得分:2)

我认为这是JAVASCRIPT,我没有使用,所以我可能错了,但是:

$var = array(1, 2, 3);
const VAR_DATA = $var;

应该在区间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>;