📅  最后修改于: 2023-12-03 15:20:20.036000             🧑  作者: Mango
在 C 编程语言中,srand()
和time()
是两个非常常用的函数,它们被广泛的应用在随机数的生成上。
srand()
是一个伪随机数生成函数,其作用是对应种子数对应的产生随机数序列。如果没有调用srand()
函数,使用rand()
函数时会自动将种子设置为 1。因此,每次运行程序,产生的随机数序列都是固定的。
下面是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()
函数是 C 语言中的一个标准库函数,其功能是返回自 1970 年 1 月 1 日 0 时 0 分 0 秒 UTC(Coordinated Universal Time)以来的秒数。也就是说,time()
函数可以获取当前时间的UNIX时间戳。
下面是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()
,可以方便地生成指定范围内的随机数。假设我们要在 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 时间戳。通过结合使用这两个函数,我们可以方便地生成任意范围内的随机数。