24小时热门版块排行榜    

查看: 881  |  回复: 6

tengnianj

银虫 (正式写手)

[求助] matlab里的rand函数的分布?一个一个产生,和一次产生许多个,有什么区别? 已有4人参与

如果要生成20个0~1的随机数,下面两种方法是否一样?
1.a=rand(20,1)
2. for i=1:20
    b=rand(1,1)
    a(i)=b;
end

附上各自概率分布图



我的程序中,是用这组随机数,与一个计算好的概率P相比较,当a<P时执行判断后的代码。
因为程序中,涉及到,是在循环内产生一个随机数,还是循环外,生成随即数组的问题,
相知道,这两种方法,会不会对结果产生影响。

matlab里的rand函数的分布?一个一个产生,和一次产生许多个,有什么区别?
2.循环内生成


matlab里的rand函数的分布?一个一个产生,和一次产生许多个,有什么区别?-1
1.数列生成
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
按我的理解,二者是一样的。即一次性生成的20个随机数也是相互独立的,和循环20次生成的随机数效果一样。
知其然,知其所以然。
2楼2016-10-11 13:11:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
作法1 --
同?y數Seed, 序列可能相同?
CODE:
.a=rand(20,1)

CODE:
for i=1:20
    b=rand(1,1)
    a(i)=b;
end

作法2 --
同?y數Seed, 同序列
CODE:
rng('shuffle')
a=rand(20,1)

不同?y數Seed, 不同序列
CODE:
for i=1:20
    rng('shuffle')
    b=rand(1,1)
    a(i)=b;
end

3楼2016-10-11 19:18:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guokeqin

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
两者是一样的,随机数是通过随机方法产生的一组值,rand是产生0到1范围内的均匀随机数,等概率分布的随机数,只是两次取得的随机数不同而已!

发自小木虫Android客户端
4楼2016-10-12 17:08:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hmmwjs

木虫 (著名写手)

你猜

【答案】应助回帖

感谢参与,应助指数 +1
不一样,rand是产生均匀分布的随机矩阵,randn是产生正态分布的随机矩阵。所以一次性生成的是均匀分布的,值之间有统计关系,而单个生成的话,得到的就是纯随机的,每个值都随机。

发自小木虫Android客户端
亲身体验通常是成长所必须的
5楼2016-10-13 23:38:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

solar0913

至尊木虫 (著名写手)

生成随机数时初始种子seed的设置是关键,因为matlab生成的随机数是伪随机。

发自小木虫Android客户端
6楼2016-10-14 00:05:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hmmwjs

木虫 (著名写手)

你猜

引用回帖:
5楼: Originally posted by hmmwjs at 2016-10-13 23:38:02
不一样,rand是产生均匀分布的随机矩阵,randn是产生正态分布的随机矩阵。所以一次性生成的是均匀分布的,值之间有统计关系,而单个生成的话,得到的就是纯随机的,每个值都随机。
...

更正一下,之前回复的观点纯属书上得来的,今天经过大量数据验证后,发现二者没有区别

发自小木虫Android客户端
亲身体验通常是成长所必须的
7楼2016-10-27 16:38:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tengnianj 的主题更新
信息提示
请填处理意见