matlab randn是用来干什么的?

网上有这么句话:randn产生均值为0,方差σ^2=1,标准差σ=1的正态分布的随机数或矩阵的函数。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~... 网上有这么句话:

randn
产生均值为0,方差 σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
可是我用了下发现均值不为0
那randn是用来干什么的?
展开
 我来答
chole_4
2018-04-25 · TA获得超过2692个赞
知道小有建树答主
回答量:36
采纳率:100%
帮助的人:1.1万
展开全部

这是产生标准正态分布的随机数或矩阵的函数,randn 是用来产生标准正态分布伪随机数的函数,也就是你说的均值为0,标准差σ = 1。

以下是该函数的用法:

  1. Y = randn(n)

    返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。

  2. Y = randn(m,n) 或 Y = randn([m n])

    返回一个m*n的随机项矩阵。

  3. Y = randn(m,n,p,...) 或 Y = randn([m n p...])

    产生随机数组。

  4. Y = randn(size(A))

    返回一个和A有同样维数大小的随机数组。

  5. randn

    返回一个每次都变化的数量。

总而言之,由于产生的是随机数序列,这里所说的均值为0,只是说这写随机数的分布期望值为0,而不是说这个序列的平均值就一定为0。如果你用randn产生一个很长的序列,再统计其分布情况,例如:a=randn(100000,1);hist(a,100);

a是个符合中心为0,标准差是1的正态分布随机数列,求a的平均值会是个很接近0的数,但不是0。

希望对你们有所帮助。

dukinkin
推荐于2017-12-15 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:1015万
展开全部

由于产生的是随机数序列,这里所说的均值为0,只是说这写随机数的分布期望值为0

而不是说这个序列的平均值就一定为0。


如果你用randn产生一个很长的序列,再统计其分布情况,例如


a=randn(100000,1);

hist(a,100);

a是个符合中心为0,标准差是1的正态分布随机数列

求a的平均值会是个很接近0的数,但不是0

追问
懂了~验证时候程序写错了囧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-23
展开全部

randn 是用来产生标准正态分布伪随机数的函数,也就是你说的均值为0,标准差σ = 1

 

你所谓的“发现均值不为0”是什么概念?既然是随机数,无论产生多少个,都只能算是样本,所谓均值,是对样本数量足够多的情况而言的。一般而言,样本数越大,其均值越接近0。就像抛硬币,照理说两面的概率各占一半,但只抛有限次很难保证刚好各占一般的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式