C语言生成随机数都一样

问题描述

C 语言 中,在一个 循环 中,连续生成随机数,结果生成的随机数都一样,该如何在循环中,生成不一样的随机数?

分析

随机数的生成,是依赖种子的,如果种子每次都一样,那么生成的随机数就都会一样,因为我们程序中的循环运行速度很快,因此,种子每次都一样,因此,生成的随机数就都一样。

答案

循环中生成随机数

在循环中生成不一样的随机数

#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { printf("嗨客网(www.haicoder.net)\n\n"); int i = 0; for(i = 0; i < 5; i++) { srand((unsigned)time(NULL)); int srandNum = rand(); printf("SRandNum = %d\n", srandNum); } return 0; }

我们运行程序,控制台输出如下:

03_c语言生成随机数.png

我们可以看到,我们在 for 循环中,使用了五次 rand 函数来生成随机数,结果,从运行结果来看,五次随机数的结果都一样,现在,我们修改程序如下:

#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { printf("嗨客网(www.haicoder.net)\n\n"); srand((unsigned)time(NULL)); int i = 0; for(i = 0; i < 5; i++) { int srandNum = rand(); printf("SRandNum = %d\n", srandNum); } return 0; }

我们运行程序,控制台输出如下:

04_c语言生成随机数.png

这次,我们看到,我们程序生成的随机数,不再是重复的了。

C语言生成随机数都一样总结

在 C 语言中,在一个循环中,连续生成随机数,结果生成的随机数都一样,这是,因为,我们的种子每次都一样导致的。