c和c++中time , srand, rand 函数的使用

简介: c和c++中time , srand, rand 函数的使用

首先,对于三函数之间有着千丝万缕的联系。

      1.对于rand函数类型模式

int rand(void);

//即rand函数里没有参数,返回一个整形数值

     注意:rand函数返回值的范围:0到RAND_MAX,即在0到32767之间

rand函数在头文件<stdlib.h>中

      2.对于srand函数类型模式

void srand (unsigned int seed)

//初始化随机数生成器,没有返回类型,参数是无符号整形数值,将此作为随机数种子

     注意:srand函数的参数内的数值作为产生随机数的种子,种子不同,则产生的随机数不同,种子相同,产生的随机数相同

srand函数在头文件<stdlib.h>中

       3.对于time函数类型的模型

time_t time (time_t* timer)

//time_t 等效于长整型long long长长整形,而参数为指针型

     注意:time函数返回一个时间戳,而时间戳有是每分每秒都在改变,用time函数可以作为随机数种子,常用time(0)或者time(NULL)

time函数在头文件<time.h>中

三者函数之间的使用

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int main()

{

   int a;

   for (int i = 0; i < 3; i++)

   {

       //srand此为产生随机数种子的函数,若不用此函数,默认种子为1,即每次产生的随机数都一样

       //srand(i);//在此使用时,rand在循环中每次会产生不一样的数,但在每次启动程序时,产生的数值都一样

       //srand(time(NULL));//用时间戳,每次程序启动时都会产生不一样的数值,但在循环中都产生一样的数值

       //srand(5);//在此使用时,种子都是5,即每行产生的随机数也是一样的

       for (int j = 0; j < 3; j++)

       {

           //srand(5);//种子相同,都是5,则每个产生的随机数相同

           a = rand();//即,若随机数种子相同,则产生的随机数相同,种子不同,随机数不同

           printf("%d ", a);

       }

       puts("");

   }

//从以上可得出,在rand函数中,若有一个种子,在一个程序中每次会产生不同的数值,但每次程序启动时都是相同的数值

   return 0;

}

例:用三个函数产生一个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—100的数
    printf("%d\n", random_num);
    return 0;
}
相关文章
|
28天前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
1月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
45 6
|
1月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
23 0
C++ 多线程之线程管理函数
|
1月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
23 3
|
1月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
157 1
|
1月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
30 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
41 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
2月前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
22 3
|
3月前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
|
3月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
42 0