是否可以在MATLAB或Octave中定义自己的概率密度函数并使用它 用于生成随机数?
MATLAB和Octave有默认函数,比如rand,randn内置从统一或正态分布中随机绘制点,但似乎没有关于如何定义我自己的proability密度函数的文档。
答案 0 :(得分:8)
从任意随机分布中抽样并不总是微不足道的。对于众所周知的发行版,有一些技巧可以实现它们,其中大部分都是在统计工具箱中实现的,如Oli所说。
如果您感兴趣的分布形式困难,那么有许多可能对您有帮助的采样算法,例如,rejection sampling,切片采样,Metropolis–Hastings algorithm。
如果您的分布是离散的,或者可以通过离散分布很好地近似,那么您可以使用randsamp
进行多项式采样。
答案 1 :(得分:1)
如果您拥有统计工具箱,则可以使用random()
,因为它内置了大量有用的PDF。
答案 2 :(得分:1)
我最近不得不这样做几次,这并不是一件容易的事。我最喜欢的技巧是使用Inverse transform sampling。
这个想法非常简单: