如何从已知密度的随机变量中生成随机变量?

机器算法验证 分布 随机生成
2022-03-28 18:33:14

给定一个随机数生成器来生成具有概率密度函数f(x)的随机变量,如何生成具有概率密度函数g(x)?

1个回答

如果您知道两者的 pdf 以及可以从中采样的分布f(x),则包含您要采样的分布g(x)(或者可以通过将可能性乘以一些来做到这一点常量c ),您可以使用接受-拒绝算法这种方法的要点如下:

  1. 从f(x)中绘制一个值f(x)
  2. 在那个 x 值处,形成一个比率,r=g(x)/f(x)
  3. 从区间 (0,1) 上的均匀分布中绘制一个值u
  4. 如果,则接受该并存储它urx
  5. 如果,则拒绝该并重新开始u>rx
  6. 继续,直到你有个已实现的值N

请注意,接受-拒绝算法是出了名的缓慢,即使您最终接受了所有 x 值,每次抽奖也有几个额外的步骤。要优化这种方法的性能,请尝试选择尽可能接近(即,略高于) (x) ,以便您接受尽可能高的百分比。f(x)g(x)