为什么randn函数返回的数字大于1?

时间:2013-07-17 15:27:12

标签: matlab normal-distribution uniform-distribution

我认为randn会返回一个属于正态分布的随机数,其平均值为0,标准差为1.因此,我希望得到一个范围内的数字(0,1)。但我得到的是一个不在范围(0,1)内的数字。

我做错了什么?

3 个答案:

答案 0 :(得分:12)

您正在考虑统一分配。理论上,正态分布可以具有非常大的数,具有非常低的概率。

randn的平均值为0,标准差为1.正态分布为钟形曲线/高斯形状,平均概率最高,概率相对于标准偏差下降。

您正在寻找的是rand,它来自均匀随机分布的“样本”,它给出了0到1之间的数字,并且在所有点都有均匀概率。

答案 1 :(得分:5)

答案 2 :(得分:2)

另一种可能的混淆来源:

平均0方差 1的{​​{3}}通常表示为 N (0,1)。这有时被称为标准正态分布,并且暗示样本是从所有实数中提取的,即范围(-∞,+∞),具有均值0和方差1。在这种情况下,标准差也是1,但是这种表示法指定了方差(许多人将其搞砸了)。变换 N (μ,σ 2 )=μ+σ N (0,1),其中μ是平均值,σ 2 是方差,σ是标准差,非常有用。

类似地,开放区间(0,1)上的normal distribution通常表示为 U (0,1)。这通常被称为标准均匀分布,并且暗示样本仅从范围(0,1)中均匀地绘制。类似地,转换 U (a,b)= a +(b - a) U (0,1),其中a和b表示缩放区间的边缘,很有用。

请注意,除了作为描述每个分布的参数之外,这两种情况下的01并不代表相同的东西。从这两个分布中采样的范围称为continuous uniform distribution