r - 从自定义分布生成随机数

标签 r random distribution

我正在尝试从自定义分布生成随机数,我已经发现了这个问题: Simulate from an (arbitrary) continuous probability distribution 但不幸的是,它对我没有帮助,因为那里建议的方法需要分布函数的公式。我的分布是多个均匀分布的组合,基本上分布函数看起来像直方图。一个例子是:

f(x) = { 
    0     for  x < 1
    0.5   for  1 <= x < 2
    0.25  for  2 <= x < 4
    0     for  4 <= x
}

最佳答案

你只需要逆 CDF 方法:

samplef <- function (n) {
  x <- runif(n)
  ifelse(x < 0.5, 2 * x + 1, 4 * x)
  }

自己计算 CDF 以验证:

F(x) = 0                 x < 1
       0.5 * x - 0.5     1 < x < 2
       0.25 * x          2 < x < 4
       1                 x > 4

所以它的逆是:

invF(x) = 2 * x + 1      0 < x < 0.5
          4 * x          0.5 < x < 1

关于r - 从自定义分布生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325459/

相关文章:

r - 如何根据列表的长度拆分字符向量

java - Math.random() 到底什么时候播种?

c++ - 如何测试某些数字是否沿区间均匀分布?

r - rgeos::gCentroid() 和 sf::st_centroid() 返回的值是否不同?

r - 在ggplot2中的 map 上以一定半径绘制圆

c++ - 找到随机排列数组的平均比较次数

open-source - 我做了一些可能对社区有用的东西。怎么办?

python - python 中 rnorm 的模拟

r - 如何制作多种格式的 R 包插图?

c - 具有不同种子的PRNG序列会在C中重叠吗