This previous SO question关于将均匀分布转换为正态分布。
对于蒙特卡罗模拟,我不仅需要正态(高斯),还需要一些计算效率高的方法来从 "fat-tailed" 生成大量样本。或 heavy-tailed分布,使用给定的(64 位或 double )统一 RNG 作为输入。这些分布的示例包括:对数正态分布、帕累托分布、Student-T 分布和柯西分布。
考虑到根据需要计算逆 CDF 的计算效率高的方法,使用逆 CDF 是可以接受的。
标签用于独立于语言的算法,但所需的实现是用于基本过程编程语言(C、Basic、过程 Swift、Python 等)
最佳答案
柯西随机数可以表示为:
scale * tan(pi * (RNDU01OneExc()-0.5)) + mu
其中RNDU01OneExc()
为[0, 1)中的随机数,mu
和scale
分别为偏移量和比例尺.
一个对数正态随机数可以表示为exp(Normal(mu, sigma))
,其中Normal(mu, sigma)
是一个正态分布的随机数均值 mu
和标准差 sigma
。
my article 中提到了这些和其他类型的分布关于随机数生成和采样。
关于algorithm - 将均匀分布转换为肥尾分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972701/