是否可以在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