是否可以在MATLAB或Octave中定义自己的概率密度函数,并使用它来产生随机数?在matlab中定义自己的概率分布函数
MATLAB和Octave有像rand,randn这样的默认函数,可以从统一或正态分布中随机抽取点,但似乎没有关于如何定义我自己的Proability密度函数的文档。
是否可以在MATLAB或Octave中定义自己的概率密度函数,并使用它来产生随机数?在matlab中定义自己的概率分布函数
MATLAB和Octave有像rand,randn这样的默认函数,可以从统一或正态分布中随机抽取点,但似乎没有关于如何定义我自己的Proability密度函数的文档。
从任意随机分布抽样并不总是微不足道的。对于众所周知的发行版,有一些技巧可以实现它们,并且大多数发行版都是在统计工具箱中实现的,就像Oli说的那样。
如果您感兴趣的分布是困难的形式,有许多采样算法可以帮助您,例如rejection sampling切片采样,Metropolis–Hastings algorithm。
如果你的分布是离散的,或者可以很好地用离散分布近似,那么你可以使用randsamp
做多项式采样。
如果你有统计工具箱,你可以使用random()
,因为它内置了很多有用的PDF。
最近我不得不这样做了几次,这并不是一件容易的事。我最喜欢的技术是使用Inverse transform sampling。
的想法很简单:
+1为MCMC答案。 – YBE 2012-03-09 19:12:03