algorithm - 将均匀分布转换为肥尾分布

标签 algorithm random statistics language-agnostic distribution

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)中的随机数,muscale分别为偏移量和比例尺.

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

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

关于algorithm - 将均匀分布转换为肥尾分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972701/

相关文章:

algorithm - 计算线段末端到圆边的距离的公式是什么?

c# - 用于生成 5 个变量中具有 2 个潜在值的所有组合的算法

java - Math.random() 与 Random.nextInt(int)

.net - 使用不同的.Net 语言?

r - 分类任务中的所有二元预测器

java - 颜色减法 RBG 或 CIElab

c++ - 我的交集检查算法有什么问题?

Java - 单击 JButton 将 int 值更改为特定范围内的随机数

file - 如何使用批处理文件随机重新排列文本文件中的行

r - 如何使用 R 中的 bool 值计算多个产品之间的多重相关性