srand((unsigned int)time(NULL))的理解(C语言)

目录:

1 srand与rand的关系:

2 time函数的用法:

3 取任意数

1.  srand与rand的关系:

在C中srand函数经常跟rand函数一起使用,srand是随机数发生器的初始化函数,这两个函数都位与<stdlib.h>头文件里面。原型:

void  srand(unsigned  int   seed)

void  rand (void)

seed相当于一个种子,srand函数根据这个种子seed,设置一个随机起点,而rand函数根据这个随机起点,返回一个随机数【seed   ,RAND_MAX】,其中RAND_MAX是0x7ffff,但是是一个伪的随机数(多次编译产生的随机数是一样的,除非给一个变化的种子)

      值得注意的是:rand函数每一次被调用的时候,它都会查看之前是否调用了srand函数

1.如果调用了,则会调用srand(seed)来初始化它的随机值

2.如果没有调用,则会默认的调用srand(1)来初始化它的随机值

所以说:即使程序中没有调用srand,也和调用了srand(1)是一样的效果;并且为了让每一次程序的调用都产生不同的值,所以常常使用系统时间来初始化,也就引入了time(NULL)。

2.  关于time函数

time函数可以获取当前的系统时间(但是获取的是秒数,是从1970年1月1日零时零分零秒到目前为止所经过的时间),time可以将其转化为常规的时间

在c中的头文件为<time.h>

原型为:time_t  time(time_t   * timer) (其中time_t是long int)

程序:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#include <stdlib.h>

#include <time.h>  

int main()

    {   

int x;

long int t;

t=time(NULL);

printf("秒数为:%ld\n",t);

time(&t); //时间要有指向的地址,才能有ctime(&t)的操作。

printf("Today's date and time: %s\n", ctime(&t));

srand((unsigned int)time(NULL));//定义随机初值

x = rand()%9+1;//产生1-9的数据

printf("%d\n",x);

    }

运算结果:

        可以看到time(0)得到了一个很大的大整数,是从1970年1月1日零时零分零秒到目前为止所经过的秒数,而ctime函数将这个值,转化为了常规的时间。

3.取任意数:

        要取得[a,b)的值可以用:(rand()%(b-a))+a;(当a为0时,可以用rand()%b);

例子:x = rand()%9+1;//产生1-9的数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值