1、使用 rand() 生成随机整数
rand()
函数是 C 语言中生成伪随机整数的标准方法。然而,单独使用 rand()
不能生成完全随机的数字,它使用的是基于种子值的伪随机数生成算法。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { // 使用当前时间作为种子来初始化随机数生成器 srand(time(NULL)); // 生成一个随机整数 int randomValue = rand(); printf("随机整数: %d\n", randomValue); return 0; }
为了在每次运行程序时得到不同的随机值,你需要为随机数生成器设置种子。通常的做法是使用 srand()
函数,并传递一个变化的值,比如当前时间,这样可以确保每次执行程序时随机数序列不同。time(NULL)
返回自 Unix 纪元以来的秒数,每次程序执行时都会变化,从而确保每次执行时使用不同的种子。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { // 初始化随机数生成器,使用当前时间作为种子 srand(time(NULL)); // 生成并打印 0 到 99 之间的随机数 int random_number = rand() % 100; printf("随机数: %d\n", random_number); return 0; }
2、在指定范围内生成随机整数
如需要生成一个在指定范围内的随机数,在 min
和 max
之间,可以使用取模操作符(%
)来限制范围。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); int min = 10, max = 50; // 生成一个在 [min, max] 范围内的随机数 int randomValue = rand() % (max - min + 1) + min; printf("在 %d 和 %d 之间的随机整数: %d\n", min, max, randomValue); return 0; }
3、使用当前时间的微秒数
可以利用系统的微秒级时间戳生成随机数。这种方法生成的随机数可能不如 rand()
等方法均匀分布,但在一些简单的场景下可以使用。
#include <stdio.h> #include <stdlib.h> #include <sys/time.h> int main() { struct timeval tv; gettimeofday(&tv, NULL); // 使用微秒数作为种子 unsigned int seed = tv.tv_usec; srand(seed); // 生成 0 到 99 之间的随机数 int random_num = rand() % 100; printf("随机数:%d\n", random_num); return 0; }
4、使用 rand() 和时间戳结合的 XOR 方式
可以通过与系统时间戳结合,使用异或(XOR)运算来生成随机数。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { unsigned int seed = (unsigned int)time(NULL) ^ 0xabcdef; // 异或当前时间 srand(seed); // 生成 0 到 99 之间的随机数 int random_num = rand() % 100; printf("随机数:%d\n", random_num); return 0; }