在 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;
}
我们运行程序,控制台输出如下:
我们可以看到,我们在 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;
}
我们运行程序,控制台输出如下:
这次,我们看到,我们程序生成的随机数,不再是重复的了。
在 C 语言中,在一个循环中,连续生成随机数,结果生成的随机数都一样,这是,因为,我们的种子每次都一样导致的。