2012-03-09 131 views
5

是否可以在MATLAB或Octave中定義自己的概率密度函數,並使用它來產生隨機數?在matlab中定義自己的概率分佈函數

MATLAB和Octave有像rand,randn這樣的默認函數,可以從統一或正態分佈中隨機抽取點,但似乎沒有關於如何定義我自己的Proability密度函數的文檔。

回答

8

從任意隨機分佈抽樣並不總是微不足道的。對於衆所周知的發行版,有一些技巧可以實現它們,並且大多數發行版都是在統計工具箱中實現的,就像Oli說的那樣。

如果您感興趣的分佈是困難的形式,有許多采樣算法可以幫助您,例如rejection sampling切片採樣,Metropolis–Hastings algorithm

如果你的分佈是離散的,或者可以很好地用離散分佈近似,那麼你可以使用randsamp做多項式採樣。

+0

+1爲MCMC答案。 – YBE 2012-03-09 19:12:03

1

如果你有統計工具箱,你可以使用random(),因爲它內置了很多有用的PDF。

1

最近我不得不這樣做了幾次,這並不是一件容易的事。我最喜歡的技術是使用Inverse transform sampling

的想法很簡單:

  1. 創建CDF
  2. 使用統一的隨機數發生器。
  3. 確定RV映射到您的cdf值。