C语言:srand函数与rand函数的使用(纯干货)【易懂】

C语言:srand函数与rand函数的使用(纯干货)【易懂】


前言:在编写代码过程中,常常需要随机值来进行开发,在C语言中通常采用rand函数与srand函数组合使用的方法获取随机数。

一、rand()

来自https://www.cplusplus.com/reference/cstdlib/rand/的定义:

int rand (void);

Generate random number. //获取随机数

Returns a pseudo-random integral number in the range between 0 and RAND_MAX. //返回介于0和RAND_MAX之间的伪随机整数

头文件:#include<stdlib.h>

首先要明确的是,rand函数所产生的是一种伪随机数,其通过线性同余法计算出随机数。其范围在0-RAND_MAX之间,范围至少是0-32767,不同编译环境下不同。

rand函数是需要srand配合使用的,若不使用则默认种子为1,导致rand()函数产生的随机值相同。
 

二、srand()

来自https://www.cplusplus.com/reference/cstdlib/srand/的定义:

void srand (unsigned int seed);

Initialize random number generator. //初始化随机数生成器

The pseudo-random number generator is initialized using the argument passed as seed. //使用作为种子传递的参数初始化伪随机数生成器

头文件:#include<stdlib.h>

在使用时,在srand(seed)括号内添加种子,输入的seed不同,随机值不同。
 

三、time()

在使用中,为了避免手动输入以及实现真正随机值的产生,通常使用time()函数

来自https://www.cplusplus.com/reference/ctime/time/的定义:

time_t time (time_t* timer);

Get current time. //获取当前时间

Get the current calendar time as a value of type time_t. //获取当前日历时间作为time_ t类型的值

头文件:#include<time.h>

time()函数:通常用法为time(NULL)或time(0),函数会返回自1970年1月1日00:00:00走过的秒数(UNIX系统的Epoch时间),若在括号内设置参数,则保存到参数指针所指的变量中。
 

四、运用:生成一个1-100的随机数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    srand(time(NULL));
    int random_num=rand()%100+1;//取模100,得到的是0-99,因此要+1
        printf("%d\n",random_num);
    return 0;
}

由此得到一个结论:要获取 [a,b] 的随机值,则随机数为a + rand() % (b - a+1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值