• 【C语言基础】rand()和srand()的使用


    📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
    📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
    📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
    📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处


    rand()

    在C语言中,rand() 是一个标准库函数,用于生成伪随机数。它位于 头文件中。
    函数原型:

    int rand(void);
    
    • 1

    rand() 函数返回一个介于 0 和 RAND_MAX 之间的整数值,其中 RAND_MAX 是一个常量,表示该实现中 rand() 函数生成的最大随机数。

    为了产生不同的随机数序列,通常需要在调用 rand() 之前使用 srand() 函数设置一个种子值。srand() 函数也位于 头文件中。

    rand函数+1

    如果想要表示一个数是从0开始到最大值的,比如说,想要产生一个0-99之间的随机数,那么用法如下

    int num = rand() % 100
    • 1

    如果想要产生一个数是从1开始到最大值的,比如说,想要产生一个1-100之间的随机数,那么用法如下

    int num = rand() % 100 + 1;
    
    • 1

    需要注意最后+1和不+1的区别,+1的最小值是1,不+1的最小值是0

    srand()

    在C语言中,srand() 也是一个标准库函数,也位于 头文件中。
    函数原型:

    void srand(unsigned int seed);
    
    • 1

    seed 参数是一个无符号整数,用作随机数生成器的种子。通过改变种子值,可以获得不同的随机数序列。

    一种常见的做法是使用当前时间作为种子值,以确保每次运行程序时都会生成不同的随机数序列。以下是一个示例:

    #include 
    #include 
    #include 
    
    int main() {
        int i;
    
        // 设置种子值为当前时间
        srand(time(NULL));
    
        // 生成并打印 10 个随机数
        for (i = 0; i < 10; i++) {
            printf("%d\n", rand());
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    time(NULL)

    在上述示例中,我们使用 time(NULL) 函数获取当前时间,并将其作为 srand() 的种子值。然后使用 rand() 生成并打印了 10 个随机数。

    time(NULL) 是一个C语言的函数调用,它返回当前时间的 Unix 时间戳。该函数位于 头文件中,需要使用该头文件才能调用该函数。

    具体示例代码如下:

    #include 
    #include 
    
    int main() {
        time_t currentTime = time(NULL);
        printf("Current Unix timestamp: %ld\n", currentTime);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在上面的示例中,我们使用 time(NULL) 获取当前的 Unix 时间戳,并将其保存在 time_t 类型的变量 currentTime 中。然后,我们使用 printf 函数将时间戳打印出来。

    Unix 时间戳表示从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数。它是一种广泛使用的方式来表示时间和日期,在许多编程语言和操作系统中都有相关的函数或工具来处理和转换时间戳。

    注意:需要包含 这两个头文件才能成功编译和运行上述示例代码。

    在这里插入图片描述

  • 相关阅读:
    新版 Ubuntu 中 gnome-terminal 可恶的行间距问题逼我退回了 Ubuntu 20.04
    电脑特别卡,但是看cpu和内存使用量并不大,该如何提升电脑运行速度
    面向对象编程原则(01)——概述
    (附源码)ssm失物招领系统 毕业设计 182317
    AVR汇编(三):寻址方式
    奇瑞新能源小蚂蚁,一款实用好看的居家小车
    Leetcode84(柱状图中最大的矩形)
    kong网关熔断插件
    河北科技大学计算机考研资料汇总
    猿创征文|我的焚膏继晷之路
  • 原文地址:https://blog.csdn.net/weixin_51244852/article/details/134028448