下面是我写的一个关于如何保证,程序执行时,连续两次使用rand实现随机数再现的程序:该程序通过将当前的随机数保存到文件方法,实现了将随机数种子保存,从而在下一次使用rand时,保证产生的随机数序列与本次的数据序列相同的目的
改程序思想很简单,但由于本人比较菜,在文件操作时总是出问题,因此将该段程序写成了博客,以备以后复习
#include <stdio.h>
#include <time.h>#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
int ran[10];
int k;
int ret;
FILE * fd;
time_t time_me;
char buff[20];
unsigned long size=sizeof(time_t);
if(access("myrand.txt",0)!=0)
{
printf("have no file\n");
time_me=(unsigned)time(NULL);
fd=fopen("myrand.txt","w+");
sprintf(buff,"%ld",time_me);
//memset(buff+11,0,9);
fwrite(buff,strlen(buff),1,fd);
fclose(fd);
}
else
{
printf("have file\n");
fd=fopen("myrand.txt","r");
fread(buff,10,1,fd);
fclose(fd);
remove("myrand.txt");
time_me=atol(buff);
}
srand((unsigned)time_me);
for(k=0;k<10;k++)
{
ran[k]=rand()%100+1;
printf("ran[%d] is %d\t",k,ran[k]);
}
printf("\n");
}