如何在excel中的对数正态分布后创建一个随机数?

cis*_*iso 8 random math excel vba excel-vba

如果我想要一组平均值为10且标准差为5的数据,作为示例.我可以使用以下公式以正态分布计算它:

NORMINV(RAND(), Mean, Stdev)
NORMINV(RAND(), 10, 5)
Run Code Online (Sandbox Code Playgroud)

这给出了从大约-5到25的数字,其频率分布看起来正常,大多数值以均值为中心.

我怎样才能获得一组相似的数字,但是它们遵循对数正态分布,一个数字较大且不可能低于零的概率?

我想使用没有插件的Excel来做到这一点.

我试过了:

 LOGINV(RAND(), Mean, Stdev)
 LOGINV(RAND(), 10, 5)
Run Code Online (Sandbox Code Playgroud)

..但这给了我非常大的数字(20的力量等),看起来毫无意义.

小智 9

对数正态是e ^ N(m,s).所以答案,使用你的构造正常,将是

=EXP( NORMINV(RAND(),Mean,Stdev) )
Run Code Online (Sandbox Code Playgroud)

但是,这将为您提供非常大的值.下一步是缩放平均值和标准差.在伪代码中,

scaled mean = ln( m^2 / sqrt( m^2 + s^2 ))
scaled sd = sqrt( ln(( m^2 + s^2 ) / m^2 )) 
Run Code Online (Sandbox Code Playgroud)

  • 我回答了我的问题.这篇来自SAS博客的帖子解释了这一点.http://blogs.sas.com/content/iml/2014/06/04/simulate-lognormal-data-with-specified-mean-and-variance.html (4认同)