[問題]固定亂數與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