代码之家  ›  专栏  ›  技术社区  ›  Tom West

分布在正态分布的*部分*上的算法

  •  3
  • Tom West  · 技术社区  · 15 年前

    是否有一个单通算法可以产生分布在 部分 正态(高斯)分布?

    我想指定一个基值(分布的中心)、一个标准偏差以及一个最小值和最大值。

    例如,我可能希望所有值都在-0.5和+1标准差之间分布,其比率与正态分布中的相同(明显增加以考虑缺少的尾部)。

    显然,只有在生成的数字介于最小值和最大值之间时,才能使用循环并退出,但如果最小值/最大值太靠近或太远离尾部,则可能会持续很长时间。

    我假设一个具有高斯随机数函数的语言(我使用Java,但几乎可以读取任何东西)。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Alex Martelli    15 年前

    你可以计算 erf 对于给定的高斯最小和最大兴趣点,在这两个值之间生成随机数(均匀),并取反数。 erf .

    我知道阿帕奇图书馆有一个 尔夫 Java中的函数,参见 here 但是我不知道你应该在哪里找到 尔夫 (最坏的情况,当然,你可以用牛顿-拉斐逊来计算后者)。

    (我找到了一个逆算法 尔夫 here 用Java实现,但不能保证它的质量。