[問題] 模擬太多次就會出錯
小的最近剛學寫程式
剛剛遇到一個問題 一直無法解決 想請板上各位高手幫忙偵錯一下
大約模擬超過2萬次 視窗就會自己關閉 實在是很奇怪...也不知道錯在哪
以下是完整程式碼 不好意思有點長
先謝謝大家了
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
double normal()
{
int i ;
double N;
for(i=0;i<1;i++)
{
N=double(rand())/RAND_MAX;
}
return N;
}
int main(void)
{
int i,k,j;
int n;
printf("請輸入要模擬的次數:");
scanf("%d",&n);
double S[5][5];
S[0][0]=0.0006058718;
S[0][1]=0.000339878;
S[0][2]=0.0003308925;
S[0][3]=0.00004346825;
S[0][4]=0.0003617589;
S[1][0]=0.000339878;
S[1][1]=0.001853979;
S[1][2]=0.0007299478;
S[1][3]=0.001010278;
S[1][4]=0.0006364092;
S[2][0]=0.0003308925;
S[2][1]=0.0007299478;
S[2][2]=0.001150133;
S[2][3]=0.0005555975;
S[2][4]=0.0008855597;
S[3][0]=0.00004346825;
S[3][1]=0.001010278;
S[3][2]=0.0005555975;
S[3][3]=0.001122313;
S[3][4]=0.0003779205;
S[4][0]=0.0003617589;
S[4][1]=0.0006364092;
S[4][2]=0.0008855597;
S[4][3]=0.0003779205;
S[4][4]=0.0009437375;
/*
for(i=0;i<5;i++)
{
for(j=i;j<5;j++)
{
printf("請輸入第%d和第%d個資產共變異度",i+1,j+1);
scanf("%lf",&S[i][j]);
S[j][i]=S[i][j];
}
}
*/
double W[n][5],sum,N[5];
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
for(sum=0,k=0;k<5;k++)
{
N[k]=normal();
sum+=N[k];
}
for(j=0;j<5;j++)
{
N[j]=N[j]/sum ;
W[i][j]=N[j];
}
}
double Y[n][5];
for(i=0;i<n;i++)
{
for(j=0;j<5;j++)
{
for(Y[i][j]=0,k=0;k<5;k++)
{
Y[i][j]+=W[i][k]*S[k][j];
}
}
}
double var[n];
for(i=0;i<n;i++)
{
for(var[i]=0,j=0;j<5;j++)
{
var[i]+=Y[i][j]*W[i][j];
}
}
int h;
double min;
for(min=100000,i=0;i<n;i++)
{
if(var[i]<min)
{
min=var[i];
h=i;
}
}
printf("portfolio-var=%lf\n",min);
for(j=0;j<5;j++)
{
printf("第%d個資產配置為%lf\n",j+1,W[h][j]);
}
getchar();
getchar();
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.225.29
→
03/18 16:53, , 1F
03/18 16:53, 1F
→
03/18 18:01, , 2F
03/18 18:01, 2F
→
03/18 18:02, , 3F
03/18 18:02, 3F
→
03/18 18:03, , 4F
03/18 18:03, 4F
→
03/18 19:57, , 5F
03/18 19:57, 5F