栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

int rand(void);

    3. rand函数调用方式:

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

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

结果如下: 

 

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号