浅谈使用rand函数、srand函数和time函数所需注意的事项

一、浅谈C语言中的rand函数

  1. rand函数的功能:随机生成一个数,数的范围是0到RAND_MAX(RAND_MAX的值为32767),对应的十六进制范围就是0到0x7fff。
  2. 函数原型如下:

#include<stdlib.h> //stdlib.h里有宏定义 #define RAND_MAX 0x7fff

int rand(void);

    3. rand函数调用方式:

  • rand函数每次在调用是会先判断是否有给srand(seek)中的形参seek赋值,如果没有默认seek为1(srand函数在下面浅谈),所以我们就可以发现,当我们没有给srand函数一个实参,直接用rand()输出一个数时,默认第一个随机数都是41,代码如下:
#include<stdlib.h>
void main
{
int a = rand();
printf("%d",a);
//不论怎么运行,结果都为41
}
//也就相当于srand(1),seek设置为1
#include<stdlib.h>
void main
{
srand(1);
int a = rand();
printf("%d",a);
//不论怎么运行,结果都为41
}

二、浅谈C语言中的srand函数 

1. srand函数的功能: srand函数设置生成一系列伪随机整数的起点,也就是说rand函数要有不同的起始值,那么srand函数就是来设置rand函数的起始值,而起始值seed有一定的联系,不同的seed就可以设置不同的rand函数的起始值。

2.srand函数原型:

#include<stdlib.h>

void srand(unsigned int seed);

3.srand函数的使用:

  • srand是srand函数是随机数发生器的初始化函数,调用时需要给srand函数一颗种子seed来进行初始化起点,如果seed种子的值一样,那么起点也就是一样了。
  • 如果我们要得到一个十分随机的数值,就是不管怎么运行,每次的起点都是不一样,那么我们就需要用到time函数来作为一颗种子,播种给srand函数来进行起点的初始化。time的作用是获取系统时间,得到的值是一个时间戳,即从1970年1月1日0点到现在时间的秒数,然后将得到的time_t类型数据转化为(unsigned int)的数,然后再传给srand函数。
  • 如果seek种子的值每次都太近的话,生成的第一个随机数的值也就相近 。

//所以可以给time函数的值乘以一个整数

srand((unsigned int)(time(NULL)*10));

  • 一般的代码形式如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
    srand((unsigned int)(time(NULL)));//time函数的原型:time_t time( time_t *timer );
    int a = rand();
    printf("%d",a);
    //此时a就是一个随机的数
}

 三、确定rand函数生成的随机数范围

1.例如:要确定一个[1,100]以内的随机数,代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(){
    srand((unsigned int)(time(NULL)));
    //%100,代表筛选出了100一下的数,也就是[0,99];+1后的范围也就是[1,100]
    int a = rand() % 100 + 1;
    printf("%d",a);
}

结果如下: 

09e25633a3304b37a3474c7b126c0fad.jpeg

 

如有不足之处,欢迎大家指出!!!

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子斤欠木同

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值