📜  srand time null - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:20:20.036000             🧑  作者: Mango

srand()和time()的作用和用法

在 C 编程语言中,srand()time()是两个非常常用的函数,它们被广泛的应用在随机数的生成上。

什么是srand()函数

srand()是一个伪随机数生成函数,其作用是对应种子数对应的产生随机数序列。如果没有调用srand()函数,使用rand()函数时会自动将种子设置为 1。因此,每次运行程序,产生的随机数序列都是固定的。

srand()函数的使用方法

下面是srand()函数的使用方法:

void srand(unsigned int seed);

其中,参数seed为产生随机数所需的种子数,通常使用当前时间作为种子,以增加随机性。

例如:

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

int main() {
    int i;
    srand(time(NULL));  // 使用当前时间作为种子数
    for(i = 0; i < 10; i++) {
        printf("%d ", rand()); // 产生一个随机数
    }
    return 0;
}

运行结果:

1576760487 724522501 285585069 339307790 1236222681 255870395 1942219634 1237270108 1705352381 1456416129

可以看到,每次运行程序,都会产生不同的随机数序列。

什么是time()函数

time()函数是 C 语言中的一个标准库函数,其功能是返回自 1970 年 1 月 1 日 0 时 0 分 0 秒 UTC(Coordinated Universal Time)以来的秒数。也就是说,time() 函数可以获取当前时间的UNIX时间戳。

time()函数的使用方法

下面是time()函数的使用方法:

time_t time(time_t *time_ptr);

其中,参数time_ptr可选,如果不为 NULL,返回值也将保存在time_ptr中。

例如:

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

int main() {
    time_t unix_time;
    unix_time = time(NULL); // 获取当前时间的 UNIX 时间戳
    printf("UNIX 时间戳:%ld\n", unix_time);
    return 0;
}

运行结果:

UNIX 时间戳:1576761135
使用 srand() 和 time() 生成指定范围内的随机数

利用srand()time(),可以方便地生成指定范围内的随机数。假设我们要在 1 到 100 之间生成随机数,可以使用下面的代码:

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

int main() {
    int i;
    srand(time(NULL));
    for(i = 0; i < 10; i++) {
        printf("%d ", rand() % 100 + 1);
    }
    return 0;
}

运行结果:

63 63 94 100 23 27 4 81 17 34

上面的代码使用了rand() % 100 + 1计算进行取模运算,保证了所生成的数在 1 到 100 之间。

总结

在 C 编程语言中,srand()time()函数是两个非常重要的函数,它们通常被用于生成随机数。srand()函数用于设置随机数生成的种子数,time()函数用于获取当前时间的 UNIX 时间戳。通过结合使用这两个函数,我们可以方便地生成任意范围内的随机数。