[问题]固定乱数与if结构

楼主: popo14777 (草草)   2016-03-02 23:00:18
小弟想要把avg值给固定住
以下是我的程式码
for j=1:1000
for i=1:1000
data=normrnd(mu,sigma,m,n);%随机产生常态机率的值(-3~3间)
data_total=[data_total; data];
if (data>3) || (data<-3)%若在-3与3之外,就停止循环
break
end
end
d=[d;i];
end
avg=mean(d)%ARL值
以上avg输出结果都会落在350~380左右,现在我想要把avg值给固定住
就是我这次avg值是375,下次在run一次也是375,run个n次还是375,
于是在我的程式码中加入了rng,如下
for j=1:1000
for i=1:1000
rng('default');
rng(i)
data=normrnd(mu,sigma,m,n);%随机产生常态机率的值(-3~3间)
data_total=[data_total; data];
if (data>3) || (data<-3)%若在-3与3之外,就停止循环
break
end
end
d=[d;i];
end
avg=mean(d)%ARL值
以上的avg输出结果都一值落在72,但并不是我要的结果,
因为我点开d矩阵一看,1~1000个都是72,
又点了data矩阵一看,发现1~72笔数据、73~144、145~216以此类堆...
也就是每72笔乱数都一样,所以才会造成我的avg都一值落在72
主要是因为我的rng(i)碰上了if与break,所以第72笔break后就从1开始
而小弟要的结果是d矩阵不能都相同、rng(i)不受if循环控制、avg值也跟原始一样落在
350~380左右,但下次再run时要跟上次一样
谢谢!!麻烦大大了!!
作者: celestialgod (天)   2016-03-02 23:56:00
rng放错位置,应该是在i外面,j里面rng(j)
楼主: popo14777 (草草)   2016-03-03 00:29:00
谢谢C大~已解决
作者: JamesChen (James)   2016-03-03 03:51:00
应该是最一开始下一个乱数种子吧0.9
作者: celestialgod (天)   2016-03-03 09:40:00
最一开始也可以,SEED只要设定一次其实就可以了我只是想说 你想要循环里面,我才推rng(j)设定好一次seed,他就会直接从那个seed开始生成乱数

Links booklink

Contact Us: admin [ a t ] ucptt.com