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

简介: 浅谈使用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(unsignedintseed);

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);
}

结果如下:

 

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

 

相关文章
c和c++中time , srand, rand 函数的使用
c和c++中time , srand, rand 函数的使用
|
5月前
|
算法 Unix Linux
C语言随机数的产生(rand、srand、time函数细节讲解)
C语言随机数的产生(rand、srand、time函数细节讲解)
105 0
|
1月前
|
存储
经典面试题:写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个 复制 #define MIN(a,b) ((a)<=(b)?(a):(b))
你的宏定义已非常接近标准。以下是改进后的 `MIN` 宏定义,支持多种数据类型并避免副作用:
|
5月前
|
算法 编译器 C++
随机数的实现——rand函数、srand函数和time函数
随机数的实现——rand函数、srand函数和time函数
|
5月前
|
关系型数据库 MySQL 数据库
MySQL数据库——函数-字符串函数、数值函数、日期函数、流程函数
MySQL数据库——函数-字符串函数、数值函数、日期函数、流程函数
47 2
|
6月前
|
Python
创建自定义函数 is_number() 方法来判
创建自定义函数 is_number() 方法来判
|
5月前
atoi函数(想要彻底了解atoi函数,那么看这一篇就足够了!)
atoi函数(想要彻底了解atoi函数,那么看这一篇就足够了!)
|
6月前
|
存储 编译器 C语言
c语言随机数生成(rand,srand,time)
c语言随机数生成(rand,srand,time)
145 1
|
6月前
|
SQL 关系型数据库 MySQL
⑥ 【MySQL函数】字符串函数、数值函数、日期函数、流程函数
⑥ 【MySQL函数】字符串函数、数值函数、日期函数、流程函数
63 0
|
6月前
|
C语言
time、rand和srand函数及应用(C语言)
系统生成一个1~100的随机数,然后用户去猜如果猜大了就提示猜大了,猜小了就提示猜小了,如果猜对了系统就提示找到了。 要想完成猜数,首先要生成随机数,生成随机数之后所有的问题就变得简单了,下面我们来学习几个随机函数的定义和使用。