c语言-生成随机数、获取当前年月日时分秒

2024-03-27 13:28

本文主要是介绍c语言-生成随机数、获取当前年月日时分秒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rand()简介

  • 头文件 <stdlib.h>

  • 标准的C库中函数rand()可以生成 0~RAND_MAX 之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。

  • rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:

printf("Random numbers are: %i %i\n",rand(),rand());
  • rand()产生伪随机数,当随机种子(伪随机序列的初始数值)不变,每次执行rand() 返回相同的值。

  • srand() 伪随机数生成器 让随机种子随着当前时间而变化,使rand()产生不同的随机数序列。

srand()简介

  • rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。
  • srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列。

c语言的time(0)和time(NULL)区别

  • time(0)time(NULL) 都用于获取当前时刻的unix时间戳

  • time(0)接收一个整数类型的参数;time(NULL)接受一个空指针,两种调用方式在功能上等价,一般time(null)使用较广。

时间戳

  • Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

    • 前缀Unix是因为 Unix 操作系统最早使用了这种时间表示方式并将其命名为 Unix 时间戳。

    • UTC 和 GMT 都是国际标准时间的代表

    • UTC(Coordinated Universal Time):UTC 是一种标准时间,是由国际原子时所提供的时间测量,它是以原子钟为基础,与地球自转无关。UTC 被认为是世界时间的参考时标,被广泛用于全球各地的航空、航海、互联网和科学研究等领域。UTC 通常是通过全球性的时间传输服务来保持精确性。

    • GMT(Greenwich Mean Time):GMT 是相对于格林尼治天文台的时间。原始的 GMT 是以格林尼治天文台的太阳穿越格林尼治子午线的时间作为午夜,被用作参考时间。但随着时间的推移,GMT 已经逐渐被 UTC 取代,尤其在科学和技术领域。在通常情况下,UTC 和 GMT 是相等的。

获取当前年月日-时分秒

#include <stdio.h>
#include <time.h>// 结构体用于存储年月日时分秒
struct DateTime {int year;int month;int day;int hour;int minute;int second;
};// 获取当前时刻的年月日时分秒
struct DateTime getCurrentDateTime() {// 获取当前时间戳time_t now;    time(&now);//将time()返回的时间戳存入new指向的地址// 将时间戳转换为结构体表示的时间struct tm *local = localtime(&now);// 将时间转换为自定义的结构体struct DateTime currentDateTime;currentDateTime.year = local->tm_year + 1900;   // tm_year表示自 1900 年至今的年数currentDateTime.month = local->tm_mon + 1;      // tm_mon表示月份,范围为 0-11currentDateTime.day = local->tm_mday;          // tm_mday表示月中的天数,范围为 1-31currentDateTime.hour = local->tm_hour;         // tm_hour表示小时,范围为 0-23currentDateTime.minute = local->tm_min;        // tm_min表示分钟,范围为 0-59currentDateTime.second = local->tm_sec;        // tm_sec表示秒数,范围为 0-59return currentDateTime;
}int main() {// 获取当前时刻struct DateTime current = getCurrentDateTime();// 输出当前时刻printf("当前时刻:%d年%d月%d日 %02d:%02d:%02d\n", current.year, current.month, current.day, current.hour, current.minute, current.second);return 0;
}

这篇关于c语言-生成随机数、获取当前年月日时分秒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/852247

相关文章

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ