aph*_*aph 0 python random numpy scientific-computing scipy
我想绘制npts随机变量,以高斯分布,均值μ和色散sigma.我知道如何在Numpy中做到这一点:
x = np.random.normal(loc=mu, scale=sigma, size=npts)
print(np.std(x), np.mean(x))
0.1998, 0.3997
Run Code Online (Sandbox Code Playgroud)
这也应该可以通过逆变换使用scipy.special.erfinv,从均匀分布开始:
u = np.random.uniform(0, 1, npts)
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何正确缩放比例.有没有人这样做过?
试试这个:
mean = 100
sigma = 7
x = mean + 2**0.5 * sigma * erfinv(np.random.uniform(size=10**5) * 2 - 1)
x.mean(), x.std()
Out: (99.965915366042381, 7.0062395839075107)
Run Code Online (Sandbox Code Playgroud)
从erf到正态分发的转换来自John D. Cook的博客.
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |