在MATLAB中生成对数正态随机数?

Zac*_*ack 5 matlab

我正在尝试生成从对数正态分布中获取的10000个随机数,其相关的正态分布具有均值= 0.3和std.开发.在MATLAB中= 0.05.

我正在使用内置lognrnd功能.

我的尝试是:

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

然而,当我绘制的直方图R使用hist(R),相关的情节是正常的,不正常的日志.

我搞砸了哪里?如果平均值= 0.3和标准.开发.= 0.05的正态分布,不应该生成的对数正态数具有均值= 0.3和std.dev = 0.05?

多谢你们.

rbu*_*rny 6

您生成的数字实际上来自对数正态分布.Plot看起来与您的参数相似.比较hist(R)hist(log(R))-形状几乎相同.

至于均值和偏差,请查看lognrnd文档:

mu and sigma are the mean and standard deviation, respectively,
of the associated normal distribution.
Run Code Online (Sandbox Code Playgroud)

因此,生成的数字预计会有不同的均值和偏差.

编辑:我不确定Matlab是否允许您直接指定对数正态分布参数,但您可以从另一个参数中导出一组参数.假设M和V是对数正态变量的期望参数,您可以计算musigma使用以下公式:

x = 1 + V / M^2
sigma = sqrt(log(x))
mi    = log(M / sqrt(x))
Run Code Online (Sandbox Code Playgroud)

请参阅维基百科以获得相反的转换.