📜  时间随机 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:55:10.231000             🧑  作者: Mango

时间随机 - C 编程语言

如果你在编写 C 程序时需要使用到明确的时间,那么你会想要了解如何生成随机的时间。在 C 语言中,有很多方法可以在程式中生成随机时间。

使用 time.h 库

time.h 库是一个常用的 C 语言标准库,它包含一些处理时间和日期的函数和宏。下面是一个使用 time.h 库生成随机时间的示例程序:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    srand(time(NULL));  // 使用当前时间作为随机数种子
    struct tm randTime = {0};
    randTime.tm_mday = rand() % 31 + 1;  // 随机生成日
    randTime.tm_mon = rand() % 12;  // 随机生成月份
    randTime.tm_year = rand() % 120 + 1900;  // 随机生成年份
    randTime.tm_hour = rand() % 24;  // 随机生成小时
    randTime.tm_min = rand() % 60;  // 随机生成分钟
    randTime.tm_sec = rand() % 60;  // 随机生成秒钟
    printf("随机生成的时间:%d-%d-%d %d:%d:%d\n", randTime.tm_year, randTime.tm_mon, randTime.tm_mday, randTime.tm_hour, randTime.tm_min, randTime.tm_sec);
    return 0;
}

在这段代码中,我们使用了 srand(time(NULL)) 函数来设置一个随机数种子,然后使用 rand() 函数来生成随机的日期、时间等信息。最后我们通过 printf() 函数将随机生成的时间输出。

使用 Windows API 库

如果你正在编写 Windows 应用程序,那么您可以使用 Windows API 中的 GetSystemTime() 函数来获取当前系统时间,然后将其转换为随机时间。下面是一个使用 Windows API 生成随机时间的示例程序:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main()
{
    srand(GetTickCount());  // 使用当前计时器计数作为随机数种子
    SYSTEMTIME randTime = {0};
    randTime.wDay = rand() % 31 + 1;  // 随机生成日
    randTime.wMonth = rand() % 12 + 1;  // 随机生成月份
    randTime.wYear = rand() % 120 + 1900;  // 随机生成年份
    randTime.wHour = rand() % 24;  // 随机生成小时
    randTime.wMinute = rand() % 60;  // 随机生成分钟
    randTime.wSecond = rand() % 60;  // 随机生成秒钟
    randTime.wMilliseconds = rand() % 1000;  // 随机生成毫秒数
    printf("随机生成的时间:%d-%d-%d %d:%d:%d:%d\n", randTime.wYear, randTime.wMonth, randTime.wDay, randTime.wHour, randTime.wMinute, randTime.wSecond, randTime.wMilliseconds);
    return 0;
}

在这段代码中,我们使用了 GetTickCount() 函数来获取当前计时器计数,然后将其作为 srand() 函数的种子。然后我们使用 rand() 函数来生成随机的时间信息。最后我们通过 printf() 函数将随机生成的时间输出。

总结

无论是使用 C 标准库的 time.h 库,还是使用 Windows API,都可以方便地生成随机的时间。在实际编程中,你需要根据实际需要来选择使用哪种方法。