我试图模拟由某个概率分布产生的大量数字。由于大量的代,代码是非常缓慢,并使用我所有的RAM。你知道吗
如果我使用正态分布来生成数字,使用scipy.stats.norm.ppf(random.random())
,代码很容易执行,这就是为什么我知道问题来自于此。你知道吗
我想到的唯一方法是创建一个函数,在某个点给出分布的CDF,并对其进行优化,以找到它到达随机生成的数字的位置:
def mytwofunctions():
def hansenPDF (z,x):
heta = 2.1+27.9/exp(-x[3])
c = math.gamma((heta+1)/2)/(sqrt(math.pi*(heta-2))*math.gamma(heta/2))
a = 4*x[3]*c*(heta-2)/(heta-1)
b = sqrt(1+3*x[3]**2-a**2)
if z < -a/b:
g = b*c*(1+1/(heta-2)*((b*z+a)/(1-x[3]))**2)**(-(heta+1)/2)
else:
g = b*c*(1+1/(heta-2)*((b*z+a)/(1+x[3]))**2)**(-(heta+1)/2)
return g
def integrator (z):
return integrate.quad(hansenPDF,-100,z,args=(optimparams[-1]))[0] - random.random()
有什么办法做得更有效率吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐