Sim*_*ann 2 random r distribution
我试图从自定义分布中生成随机数,我已经发现了这个问题: 从(任意)连续概率分布模拟, 但不幸的是它没有帮助我,因为方法建议需要分配函数的公式.我的分布是多个均匀分布的组合,基本上分布函数看起来像直方图.一个例子是:
f(x) = {
0 for x < 1
0.5 for 1 <= x < 2
0.25 for 2 <= x < 4
0 for 4 <= x
}
Run Code Online (Sandbox Code Playgroud)
你只需要逆CDF方法:
samplef <- function (n) {
x <- runif(n)
ifelse(x < 0.5, 2 * x + 1, 4 * x)
}
Run Code Online (Sandbox Code Playgroud)
自己计算CDF以验证:
F(x) = 0 x < 1
0.5 * x - 0.5 1 < x < 2
0.25 * x 2 < x < 4
1 x > 4
Run Code Online (Sandbox Code Playgroud)
所以它的逆是:
invF(x) = 2 * x + 1 0 < x < 0.5
4 * x 0.5 < x < 1
Run Code Online (Sandbox Code Playgroud)