得到一个集中在中心的随机数

在前端开发中,我们经常需要生成随机数,比如生成验证码、随机背景色等。但是,由于 Math.random() 方法生成的随机数是均匀分布的,它们往往不能满足我们的需求。本文将介绍如何得到一个集中在中心的随机数。

什么是集中在中心的随机数?

所谓集中在中心的随机数,就是指生成的随机数在中心附近出现的概率更高。这种分布方式被称为正态分布或高斯分布,它在统计学、物理学、金融学等领域有广泛的应用。

如何生成集中在中心的随机数?

为了生成集中在中心的随机数,我们可以使用 Box-Muller 转换算法。该算法基于极坐标系下的正态分布特性,通过两个均匀分布的随机数生成一个正态分布的随机数。

以下是 JavaScript 实现代码:

-------- -------------- -
  --- - - -- - - --
  ----- -- --- -- - - -------------- -- -- - --- -
  ----- -- --- -- - - -------------- -- -- - --- -
  --- --- - ------------ - ------------ - ---------- - ------- - ---
  -- ----- ------- -
  ------ --- - -- - ----
-

上述代码中,我们首先生成两个不为 0 的随机数 u 和 v,然后使用 Box-Muller 转换算法生成正态分布的随机数。最后,将得到的随机数乘以一个系数并加上偏移量,使其在 0 到 1 的范围内并集中在中心。

如何验证随机数是否符合要求?

为了验证生成的随机数是否符合要求,我们可以使用统计学中的假设检验方法。具体来说,我们可以绘制出样本的频率分布直方图,并使用正态分布拟合该直方图。如果拟合效果好,就说明生成的随机数符合正态分布。

以下是 JavaScript 实现代码:

-------- -------------------- -
  --- ---- - ---
  --- ---- - - -- - - ------ ---- -
    --------------------------
  -
  ----- ------- - -
    ------- -
      -
        ----- ------------
        ----- -----
        --------- -
          ------- -----
          ---------- -
            ------ -------------
          --
          ----- -
            --
              ----- -------
              ------ ------
              ------ -----
            -- -
              ------ -------
              ------ -----
            ---
            --
              ----- ------
              ------ ------
              ------ -----
            -- -
              ------ -------
              ------ -----
            --
          -
        --
        ---------- -
          ------ ---------
        --
        --------- -
          ---------- -
            ------ ---------
          -
        -
      -
    --
    -------- ---
    ------ -
      ----- --------
      ----- --------
      ------------ --- ----
    --
    ------ -
      ----- -----------
      ----- ------------
      ----- --
    -
  --
  ----- ----- - ---------------------------------------------------
  -------------------------
-

上述代码中,我们首先生成 10000 个随机数,并绘制出它们的频率分布直方图。然后,我们使用正态分布拟合该直方图,并通过可视化展示验证结果

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/8784