快速生成随机数据
在对拍或出题时生成随机数据的种子若为time(0)(需要ctime或time.h头文件),发现1s内生成的数据都是一样的。这是因为time(0)是以1s为单位。为了使1s内生成的数据能有不同,可以适用单位精确到毫秒的有关时间的操作。
注:以下操作的前提是windows环境,需要头文件windows.h。
1、SYSTEMTIME
SYSTEMTIME是一个定义的结构体类型,具体定义代码:
1 typedef struct _SYSTEMTIME { 2 WORD wYear; 3 WORD wMonth; 4 WORD wDayOfWeek; 5 WORD wDay; 6 WORD wHour; 7 WORD wMinute; 8 WORD wSecond; 9 WORD wMilliseconds; 10 } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
WORD是一个2字节的无符号整数。更多可看:https://blog.csdn.net/w2453476933/article/details/74090305 c++ 标准数据类型
SYSTEMTIME类型的成员分别意义分别是年、月、周几、天、小时、分钟、秒、毫秒
配合函数:GetSystemTime(&a) (为SYSTEMTIME类型的a赋值世界协调时)或GetLocalTime(&a) (为SYSTEMTIME类型的a赋值本地时间),a.wMilliseconds即可作为随机种子。
2、GetTickCount()
GetTickCount()返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值类型是DWORD(一个占4字节的无符号整数)。可直接作为随机种子(虽然srand()参数类型是unsigned int短了点,但问题不大)。
更详细可见:https://blog.csdn.net/mjshldcsd/article/details/7180962 C++ GetTickCount()和Sleep()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术