马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
需要生成100000的时间序列,程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
//#define N 100000
void main()
{
FILE *fid;
double lambda=1000.0;
unsigned long int i;
double r;
double *t_arrival,*x,sum;
x=(double*)malloc(100000*sizeof(double));
t_arrival=(double*)malloc(100000*sizeof(double));
for (i=0;i<100000;i++)
*(t_arrival+i)=0;
fid=fopen("result.txt","rw");
srand((unsigned)time(NULL)); // 用当前时间来定种子
fprintf(fid,"time=\n");
for (sum=0,i=0;i<100000;i++)
{
r = ((double)rand()/((double)(RAND_MAX)+(double)(1)));
*(x+i) = (-1.0/lambda)*log(r);
sum+=*(x+i);
}
for(i=0;i<100000;i++)
printf("%10f",*(x+i));
printf("sum=%f",sum);
for (i=1;i<100000;i++)
*(t_arrival+i)=*(t_arrival+i-1)+*(x+i-1);
free(x);
for (i=0;i<100000;i++){
printf("%10f",*(t_arrival+i));
}
for(i=0;i<100000;i++)
{
fprintf(fid,"%f\n",*(t_arrival+i));
}
free(t_arrival);
fclose(fid);
}
*(x+i)显示数据都正常,但当i较小时输出的*(t_arrival+i)正常,i较大时就出现1.INF00(*(t_arrival+i)的最大值没超过double的范围),大家帮忙看看,谢谢了。 |