我知道,对于任何选定的均值和标准差,正态分布总是大于0。
>> np.random.normal(scale=0.3, size=x.shape)
[ 0.15038925 -0.34161875 -0.07159422 0.41803414 0.39900799 0.10714512
0.5770597 -0.16351734 0.00962916 0.03901677]
这里的平均值是0.0,标准差是0.3,但是ndarray中的一些值是负的,我认为正态分布曲线总是正的,这是不是错了?
编辑:
但是在matlab中使用normpdf
函数总是给出一个正值数组,我猜这是概率密度函数(y轴),而numpy.random.normal
既给出正值又给出负值(x轴),现在这很混乱。
3条答案
按热度按时间icomxhvb1#
从正态分布生成的值取负值。
例如,对于平均值为0的正态分布,我们需要一些正值和负值来使平均值为0。同样,对于平均值为0的正态分布,它为正值或负值的可能性相等。
它实际上取任何正概率的真实的,你可能会和概率密度函数总是正的混淆。
u5rb5r592#
参考“www.example.com“中的np.random.normalhttps://numpy.org/doc/stable/reference/random/generated/numpy.random.normal.html,输出是样本(x),而不是分布(y)。因此,输出可以是负的。
因此,np.random.normal用于通过遵循正态分布进行采样,而不是通过遵循正态分布随机生成概率值。
mccptt673#
不要期望概率平均值为0,因为这是没有意义的,你期望你的随机事件永远不会发生。试着用
np.random.normal(0.5, 0.3, 1000)
这样的东西来表达你的正态概率分布。另外,仔细研究Normal Distribution的数学,以便能够轻松地构造概率密度函数。