关于rand使用及随机数再现问题

下面是我写的一个关于如何保证,程序执行时,连续两次使用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");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值