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)