Python:从幂律分布中生成随机数
发布时间:2020-12-20 12:08:31 所属栏目:Python 来源:网络整理
导读:参见英文答案 python scipy.stats.powerlaw negative exponent????????????????????????????????????4个 我想绘制一个2到15之间的随机变量,来自具有负指数(a = -2)的幂律分布.我找到了以下内容: r = scipy.stats.powerlaw.rvs(a,loc = 2,scale = 13,size =
参见英文答案 >
python scipy.stats.powerlaw negative exponent????????????????????????????????????4个
我想绘制一个2到15之间的随机变量,来自具有负指数(a = -2)的幂律分布.我找到了以下内容: r = scipy.stats.powerlaw.rvs(a,loc = 2,scale = 13,size = 1000) 但它并没有采取负数. 有人知道出路吗? 解决方法
numpy.random和scipy.stats中定义的幂律分布在数学意义上没有为负a定义,如
this question的答案中所解释的那样:由于奇点为零,它们不可规范化.所以,遗憾的是,数学说’不’.
您可以使用与x ^ {g-1}成比例的pdf定义分布,其中g <在不包含零的间隔上为0,如果这就是你所追求的. 对于< = x< = b的pdf(x)= const * x **(g-1),来自均匀变量(np.random.random)的变换是: In [3]: def rndm(a,b,g,size=1): """Power-law gen for pdf(x)propto x^{g-1} for a<=x<=b""" ...: r = np.random.random(size=size) ...: ag,bg = a**g,b**g ...: return (ag + (bg - ag)*r)**(1./g) 然后,你可以这样做,例如, In [4]: xx = rndm(1,2,g=-2,size=10000) 等等. 为完整起见,这里是pdf: In [5]: def pdf(x,a,g): ag,b**g ....: return g * x**(g-1) / (bg - ag) 这一切都假设a< b和g!= 0.这些公式应该与numpy.power和scipy.stats.powerlaw一致,a = 0,b = 1和g> 0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |