24小时热门版块排行榜    

查看: 919  |  回复: 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的回帖

solar0913

至尊木虫 (著名写手)

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

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

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的回帖
信息提示
请填处理意见