如何在excel中以对数正态分布创建随机数?

问题描述 投票:8回答:1

[例如,如果我想要一组平均值为10且标准差为5的数据,则可以使用此公式以正态分布进行计算:

NORMINV(RAND(), Mean, Stdev)
NORMINV(RAND(), 10, 5)

[这会导致数字介于大约-5到25之间,并且频率分布看起来很正常,大多数值都集中在平均值附近。

[如何获得一组相似的数字,但使它们服从对数正态分布,其中较大的数字更有可能出现,而没有低于零的可能性呢?

我想使用不带插件的Excel来做到这一点。

我尝试过:

 LOGINV(RAND(), Mean, Stdev)
 LOGINV(RAND(), 10, 5)

..但这会产生非常大的数字(以20的幂为单位,等等),看起来毫无意义。

excel excel-vba math random vba
1个回答
9
投票

对数正态是e ^ N(m,s)。因此,将您的构造用于正常情况,答案将是

=EXP( NORMINV(RAND(),Mean,Stdev) )

然而,这将为您带来非常大的价值。下一步是缩放平均值和标准偏差。用伪代码,

scaled mean = ln( m^2 / sqrt( m^2 + s^2 ))
scaled sd = sqrt( ln(( m^2 + s^2 ) / m^2 )) 
© www.soinside.com 2019 - 2024. All rights reserved.