C语言中rand()与time()函数的使用

一、首先,介绍一下time()函数,它是定义在<math.h>这个头文件里面。

1.函数原型为:time_t  time(time_t  *timer)

2.参数说明:timer=NULL得到当前日历时间(从1970-01-01 00:00:00到现在的秒数),time_t是一个 unsigned  long 类型。

timer=时间值,用于设置日历时间。如果 timer不为空,则返回值也存储在变量 timer中。

3.函数功能:得到当前日历时间或设置日历时间。

4.函数返回:当前日历时间。

得到系统当前时间的例子如下:

#include <stdio.h>
#include <time.h>


int main()
{

    printf("当前的系统时间为:%d\n",time(NULL));

    return 0;

}

 

其次对于产生随机数我们需要知道rand()函数与srand()函数,接下来介绍这两函数

二、rand()与srand()函数包含在<stdlib.h>头文件中

int rand(void)会返回一个[0,RAND_MAX]的随机整数。

void srand(unsigned  seed),  参数seed是srand的种子,用来初始化srand()的初始值。

系统在调用rand()之前都会自动调用srand(),如果在srand()里给参数seed指定了一个值(这里指定的值是当前时间),那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始值,如果初始值是此时的1或是其他定值,那么每次rand()产生的随机数序列都是一样的,这就是所谓的“伪随机数”。

值得注意的是,如果srand()括号中没有argument的话,程序是会报错的,因为在函数原型中,srand()函数是要求加上内容的。

若未引用srand()函数,则程序默认srand()括号中的值为1;如果引用的话,srand()括号中不能为空;

为了确保生成的随机数为尽可能符合概率上的随机,需要调用一个函数time(),

下面是随机生成1-6之间的数的例子

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main()
{
	srand((unsigned)time(NULL));	//使用当前系统时间作为种子。
	for (int i = 0; i < 6; i++)
	{
		printf("%d\n", rand() % 6 + 1);
	}
	return 0;
}



/*错误:情况未引用srand()函数,会产生伪随机数。引用了srand()函数括号内不能为空,引用了time没有强制转化为unsigned类型。

另外在开发过程中,我们一般将srand函数写在主函数中。假如需要多次生成新的随机数,不需要频繁的调用srand函数生成种子,需要使用一次srand函数。因为srand函数给它一个初值后,它会自动调用上次的随机的结果作为新的种子。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值