【问题标题】:Converting a Uniform Distribution to a Fat-tailed Distribution将均匀分布转换为肥尾分布
【发布时间】:2019-05-27 02:46:23
【问题描述】:

This previous SO question 考虑将均匀分布转换为正态分布。

对于蒙特卡罗模拟,我不仅需要正态(高斯),还需要一些计算有效的方法来从"fat-tailed"heavy-tailed 分布中生成大量样本,使用给定的(64 位或双)统一RNG作为输入。这些分布的示例包括:对数正态分布、Pareto、Student-T 和 Cauchy。

考虑到根据需要计算逆 CDF 的高效计算方法,使用逆 CDF 是可以接受的。

标签用于与语言无关的算法,但所需的实现是用于基本过程编程语言(C、Basic、过程 Swift、Python 等)

【问题讨论】:

  • 这是几本书的主题,因此,我相信,这是“太宽泛”的经典案例。这是其中一本书,作者是斯德哥尔摩大学的 Christian Walck Handbook On Statistical Distributions for Experimentalists
  • 我同意@rici。 Herehere 是 Luc Devroye 早在 1986 年编写的(相当大的)文本的链接。它包含多种算法,可以从各种分布中生成,任你选择。
  • 优秀的资源。但是我注意到,对于我询问的 4 个分布,这些文本描述了可以轻松放入 stackoverflow 答案框中的合理算法。
  • @hotpaw2:如果你问过一个发​​行版,很好。但是您说“示例包括……等”,这需要更广泛的回应。

标签: algorithm random statistics language-agnostic distribution


【解决方案1】:

一个柯西随机数可以表示为:

scale * tan(pi * (RNDU01OneExc()-0.5)) + mu

其中RNDU01OneExc() 是[0, 1) 中的随机数,muscale 分别是偏移量和比例。

一个对数正态随机数可以表示为exp(Normal(mu, sigma)),其中Normal(mu, sigma)是一个正态分布的随机数,均值为mu,标准差为sigma

my article 中关于随机数生成和抽样中提到了这些和其他类型的分布。

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 2013-09-17
    • 2010-09-09
    • 2013-03-25
    • 2012-07-04
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多