我正在写一个关于单能量伽马射线的代码,主导的相互作用是光电吸收,mu = 2 cm-1,我需要生成50000个随机数并采样交互深度(我不知道是否我做了或不做)。 我知道平均自由路径= mu-1,但我需要从模拟和mu中找到平均自由路径并比较它们,这是我在代码中做得对吗?
import random
import matplotlib.pyplot as plt
import numpy as np
mu=(2)
random.seed=()
data = np.random.randn(50000)*10
bins = np.arange(data.min(), data.max()+1e-8, 0.1)
meanfreepath = 1/mu
print(meanfreepath)
plt.hist(data, bins=bins)
plt.show()
答案 0 :(得分:1)
嗯,交互深度分布是Exponential一个,而不是高斯分布。
所以代码是
lmbda = 2 # cm^-1
beta = 1.0/lmbda
data = np.random.exponential(scale=beta, size=50000)
mfp = np.mean(data)
print(mfp)
# build histogram
https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.random.exponential.html
的更多详情上面生成的代码
0.4977168417102998
对我来说看起来像2 -1