基础知识
如果您不向其提供任何参数,np.random.normal() 将从standard normal distribution 中提取,该mean 具有0 和std(标准偏差)1.0。
任何给定值位于区间之外的几率
关于分布参数,您可以使用以下函数计算某个值超出mean +/- z(其中z 是任意值)的几率:
import scipy.special as sps
def oddsbeyond(z, std=1):
return 1 - sps.erf((z/std)/2**.5)
有关上述功能的更多详细信息,请参阅wiki article on the error function erf。
这是一个“表格”,其中包含 z = (0, 1, ..., 9) 的值位于 mean +/- z*std 之外的概率:
print(np.array([np.arange(10), oddsbeyond(np.arange(10))]).T)
输出:
[[0.00000000e+00 1.00000000e+00]
[1.00000000e+00 3.17310508e-01]
[2.00000000e+00 4.55002639e-02]
[3.00000000e+00 2.69979606e-03]
[4.00000000e+00 6.33424837e-05]
[5.00000000e+00 5.73303144e-07]
[6.00000000e+00 1.97317529e-09]
[7.00000000e+00 2.55961918e-12]
[8.00000000e+00 1.22124533e-15]
[9.00000000e+00 0.00000000e+00]]
因此,95% 加上的值将位于平均值的 2.0 标准偏差范围内,而当您到达平均值的 9.0 标准偏差时,超出该值的值的比例非常小,低于使用 double 值(标准 Numpy float)可以轻松表达的内容的限制。