(在Excel中)随机产生一个幂律分布

我正在尝试使用Excel模拟一个项目的许多不同的分布types。 现在,我产生了一个正态分布,平均值为35,标准差为3.33。 到现在为止还挺好。

我也想生成一些其他的分布types。

我试过的一个是对数正态分布。 为了得到这个,我使用下面的代码:

=(LOGNORM.INV(RAND(),LN(45^2/SQRT(45^2+3.33^2)),SQRT(LN((45^2+3.33^2)/4.5^2)) 

它产生了一些输出,但我会欢迎任何人的语法input。

我真正想做的是幂律分布。 据我所知,Excel没有内置函数来随机生成这些数据。 除了切换软件包之外,有没有人知道一个办法吗?

感谢您的任何帮助,您可以提供。

Ë

对于(typesI)帕累托分布,如果参数是最小值xm和指数alpha那么cdf由

 p = 1 - (xm/x)^alpha 

这给出概率p ,即随机variables具有<= x的值。 这很容易反转,所以你可以使用反向采样生成随机variables,遵循这种分布:

 x = xm/(1-p)^(1/alpha) = xm*(1-p)^(-1/alpha) 

如果p在[0,1]上是均匀的,那么1-p ,所以在上面你可以用RAND()来模拟1 / p。 因此,在Excel中,如果要例如模拟xm = 2alpha = 3的1类帕累托分布,则可以使用以下公式:

 = 2 * RAND()^(-1/3) 

如果你打算用不同的发行版来做这种事情,你可能要考虑使用R,它可以使用REXcel插件从Excel直接调用。 R有大量的内置分布,它可以直接从样本中抽取(并且它也使用比Excel更好的底层随机数生成器)。