[問題] 模擬太多次加起來會跑到無限大?
最近在寫模擬的東西
發現到模擬寫常態分配的時候(假設模擬1000000)
用Box Muller可以正確產生亂數
但是累加起來卻會跑到無窮 我的sum1=sum1+N[i]
EX:
N[200010]=2.24376 sum[200010]=-1.#INF
N[200011]=1.13556 sum[200011]=-1.#INF
N[200012]=-0.245738 sum[200012]=-1.#INF
N[200013]=0.502558 sum[200013]=-1.#INF
這種情況在我跑比較少的樣本的時候不會出現(100000都還OK)
有趣的是我用其它的方法產生亂數(譬如rejection方法)
但是累加不會有問題
我想請問的是Box Muller在跑大量模擬累加的時候出現了什麼問題?
底下是我Normal的程式碼
double normal(double m,double v)//Box-Muller
{
double u1,u2,z;
u1 = uniform(0,1);
u2 = uniform(0,1);
z = m + sqrt(-2*log(u1))*cos(2*pi*(u2))*sqrt(v);
return z;
}
可以幫忙小的解決這個困擾嗎?謝謝!!!
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.191.166
※ 編輯: a5170040 來自: 140.113.191.166 (03/19 02:46)
推
03/19 03:03, , 1F
03/19 03:03, 1F
→
03/19 03:05, , 2F
03/19 03:05, 2F
推
03/19 04:33, , 3F
03/19 04:33, 3F
→
03/19 07:51, , 4F
03/19 07:51, 4F
→
03/19 07:52, , 5F
03/19 07:52, 5F
→
03/19 07:53, , 6F
03/19 07:53, 6F
推
03/19 08:16, , 7F
03/19 08:16, 7F
→
03/19 09:54, , 8F
03/19 09:54, 8F
→
03/19 11:06, , 9F
03/19 11:06, 9F
→
03/19 23:14, , 10F
03/19 23:14, 10F