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

相关文章

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支