我的速度分布具有复杂的归一化因子。没有这个因素,它的积分是0.95。 我使用蒙特卡罗生成相同的速度分布。我想检查生成的速度数组,看看它是否正常工作。绘制它的形状显示它是,但我想知道是否有任何方法使python制作一个规范化为任意值的直方图? 提前全部谢谢。
def VelocityDistribution (velocity):
v = velocity
v0 = 220
ve = v0*(1.05)
return 100/95.2032*np.sqrt(1/np.pi) * (v/(v0*ve)) * (np.exp((-(v-
v0)**2)/(v0**2)) - np.exp((-(v+v0)**2)/(v0**2)))
v = np.linspace(0,800,10000)
v0 = 220
ve = v0*(1.05)
VelocityDistribution1 = 100/95.2032*np.sqrt(1/np.pi) * (v/(v0*ve)) * (np.exp((-(v-v0)**2)/(v0**2)) - np.exp((-(v+v0)**2)/(v0**2)))
i=0
V = []
while i < 100000:
randPro = random.uniform(0.0, 0.003)
randv = random.uniform(0,800)
if VelocityDistribution(randv) >= randPro :
V.append(randv)
i+=1
plt.hist(V, bins = 80, normed = 0.80)
plt.title("Velocity Distribution of WIMP particles")
plt.xlabel('Velocity (km/s)')
plt.ylabel('Probability')
plt.plot(v, VelocityDistribution1, 'r')
plt.show()