R从某个分布中抽取一个随机数

时间:2014-11-16 22:30:22

标签: r random sampling

假设我知道分布的pdf,比如f(x)。在R中,如何从此分布中绘制一个随机数。感谢。

2 个答案:

答案 0 :(得分:2)

有几种方法。其中一个是Inverse transform sampling。如果您知道任何分布的PDF(x),则可以计算CDF(x)(积分)。 CDF总是[0,1]。你这样工作:

  1. 生成随机数u [0,1]。
  2. 解决x CDF(x)=u
  3. x是所需分布的随机数
  4. 重复。
  5. 有关详情和R代码http://blog.quantitations.com/tutorial/2012/11/20/sampling-from-an-arbitrary-density/

    ,请参阅此处

答案 1 :(得分:2)

对于大多数发行版而言,你有像(runif或rbeta)这样的函数,让它称之为vanilla。 当你的分布以某种方式与vanilla分布相关联时,事实上你的f(x)图可以完全在vanilla分布图下,你可以使用接受拒绝方法。

http://www.inference.phy.cam.ac.uk/tcs27/talks/sampling.html#rejs

enter image description here