2013-01-22 157 views
5

我試圖生成10000個隨機數,取自對數正態分佈,對數正態分佈的平均值= 0.3和std。開發。在MATLAB中= 0.05。在MATLAB中生成對數正態隨機數?

我使用的是內置的lognrnd功能。

我嘗試做的事:

R = lognrnd(0.3,0.05,10000,1)

然而,當我使用hist(R)情節R直方圖,相關的情節是正常的,不正常的日誌。

我在哪裏搞亂?如果平均值= 0.3和標準差。開發。 = 0.05的正態分佈,不應該產生的對數正態數的平均值= 0.3和標準差。 dev = 0.05?

謝謝你們。

回答

6

你生成的數字實際上是從對數正態分佈。繪圖看起來與您的參數相似。比較hist(R)hist(log(R)) - 形狀幾乎相同。

至於均值和偏差,看看lognrnd documentation

mu and sigma are the mean and standard deviation, respectively, 
of the associated normal distribution. 

因此產生的數字預計將有不同的均值和偏差。

編輯:我不知道,如果Matlab的,您可以直接指定對數正態分佈的參數,但你可以得到一組從其他的參數。假設對數正態變量M和V的期望的參數,可以計算musigma使用下面的公式:

x = 1 + V/M^2 
sigma = sqrt(log(x)) 
mi = log(M/sqrt(x)) 

爲相反的轉換參見wikipedia

+0

好了 - 如果我想生成具有平均= 0.3和性病對數正態分佈隨機數的東西。 dev = 0.05? – Zack

+1

我想補充一點,如果你要增加西格瑪(比如說.5)並使用更精細的直方圖'hist(R,100)',你會看到更像你期望的偏態對數正態曲線。 – RussH

+0

感謝您接受,但我在計算中犯了一個錯誤。查看更新的公式(我測試了它們,結果看起來正確)。 – rburny