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

机器算法验证 分布 随机生成
2022-04-16 23:07:42

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

1个回答

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

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

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