{
int temp=rand();
temp=temp%6282+1;
adFi[loop]=double(temp)/1000; }
在调用rand()函数之前调用srand( (unsigned)time( NULL )),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样可以每次产生的随机数序列不同。
b关于绘制地震波加速度时程曲线图:
采用Brush填充绘图区域背景,用Pen绘制坐标及时程曲线,用Font输出文字,其中纵坐标的最大值采用动态输出——先得到所绘制地震波的幅值,将其转换为Cstring型,然后输出。
c关于数据输出和输入
分别使用ofstream类和ifstream类输出和输入数据。 fout<<"t"<<" "<<tmax<<" "<<"a"<<" "<<amax<<endl;
for(int loop=0;loop<2000;loop++)
fout<<adt[loop]<<" "<<adAg[loop]<<endl;
fout.close();
从上面的这段程序可看出,输出数据文件的第一行是“t”,地震波加速度幅值对应的时间,“a”,地震波幅值,从第二行起每行是一个时间及这个时间对应的地震波加速度幅值。
二、实例
本节通过一实例说明程序的使用方法。
例:某地区抗震设防烈度为8度,设计基本地震加速度为0.20g,设计地震分组为第一组,II类场地,利用本程序生成多遇地震人工地震波。
通过初始条件可知特征周期为0.35,水平地震影响系数0.16,地震加速度时程曲线最大值70gal。将上述数据填入程序中初始条件的3个编辑框中,点击“生成地震波”按钮,则可生成地震波,程序会自动绘制加速度时程曲线(图1)。