是否有一种单程算法可以产生分布在正态(高斯)分布的部分上的数字?
我想指定一个基值(分布的中心)、一个标准偏差以及最小值和最大值。
例如,我可能希望所有值都分布在 -0.5 和 +1 标准偏差之间,其比率与正态分布中的比率相同(显然增加以考虑到缺失的尾部)。
显然,可以使用循环并仅在生成的数字介于最小值和最大值之间时退出,但如果最小值/最大值靠得太近或沿尾部离得太远,则循环可能会持续很长时间。
我假设一种语言具有高斯随机数函数(我使用的是 Java,但几乎可以阅读任何东西)。
最佳答案
您可以计算 erf对于最小和最大兴趣点处的给定高斯分布,在这两个值之间(均匀地)生成随机数,并取反 erf
。
我知道 Apache 库在 Java 中有一个 erf
函数,参见 here ,但我不确定将您指向何处以获得 erf
的倒数(当然,最坏的情况,您可以使用 Newton-Raphson 计算后者)。
(我找到了一个反 erf
here 的算法,使用 Java 实现,但不能保证其质量)。
关于distribution - 分布在正态分布的*部分*上的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1965253/