提问人:hotpaw2 提问时间:12/30/2018 最后编辑:hotpaw2 更新时间:12/31/2018 访问量:706
将均匀分布转换为肥尾分布
Converting a Uniform Distribution to a Fat-tailed Distribution
问:
前面的 SO 问题涉及将均匀分布转换为正态分布。
对于蒙特卡洛模拟,我不仅需要正态(高斯),还需要一些计算效率高的方法,使用给定的(64 位或双精度)均匀 RNG 作为输入,从“肥尾”或重尾分布中生成大量样本。这些分布的示例包括:对数正态分布、Pareto分布、Student-T 分布和 Cauchy分布。
使用逆 CDF 是可以接受的,因为根据需要计算逆 CDF 的计算效率很高。
该标签适用于与语言无关的算法,但所需的实现适用于基本过程编程语言(C、Basic、过程 Swift、Python et.al)。
答:
1赞
Peter O.
12/30/2018
#1
柯西随机数可以表示为:
scale * tan(pi * (RNDU01OneExc()-0.5)) + mu
其中 是 [0, 1) 中的随机数,和 分别是偏移量和小数位数。RNDU01OneExc()
mu
scale
对数正态随机数可以表示为 ,其中 是具有均值和标准差的正态分布随机数。exp(Normal(mu, sigma))
Normal(mu, sigma)
mu
sigma
这些和其他类型的分布在我关于随机数生成和采样的文章中提到过。
评论