书上有一段代码如下:
#include <stdio.h>
#include <string.h>
#define N 10
int a[N];
void gen_random()
{
int i;
for (i = 0; i < N; i++)
{
a[i] = rand() % 10;
}
}
void print_array()
{
int i;
for (i = 0; i < N; i++)
{
printf(“%d “, a[i]);
}
printf(“\n”);
}
int main(int argc, char *argv[])
{
memset(a, 0, N);
print_array();
gen_random();
print_array();
return 0;
}
运行结果如下:
$ ./a.exe
0 0 0 0 0 0 0 0 0 0
1 7 4 0 9 4 8 8 2 4
$ ./a.exe
0 0 0 0 0 0 0 0 0 0
1 7 4 0 9 4 8 8 2 4
$ ./a.exe
0 0 0 0 0 0 0 0 0 0
1 7 4 0 9 4 8 8 2 4
为什么本人运行的结果每次都是一样的,不是应该每次都生成不同的10个随机数吗?
#include <stdio.h>
#include <string.h>
#define N 10
int a[N];
void gen_random()
{
int i;
for (i = 0; i < N; i++)
{
a[i] = rand() % 10;
}
}
void print_array()
{
int i;
for (i = 0; i < N; i++)
{
printf(“%d “, a[i]);
}
printf(“\n”);
}
int main(int argc, char *argv[])
{
memset(a, 0, N);
print_array();
gen_random();
print_array();
return 0;
}
运行结果如下:
$ ./a.exe
0 0 0 0 0 0 0 0 0 0
1 7 4 0 9 4 8 8 2 4
$ ./a.exe
0 0 0 0 0 0 0 0 0 0
1 7 4 0 9 4 8 8 2 4
$ ./a.exe
0 0 0 0 0 0 0 0 0 0
1 7 4 0 9 4 8 8 2 4
为什么本人运行的结果每次都是一样的,不是应该每次都生成不同的10个随机数吗?
解决方案
20
你要先设置种子才行(srand)
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define N 10 int a[N]; void gen_random() { int i; for (i = 0; i < N; i++) { a[i] = rand() % 10; } } void print_array() { int i; for (i = 0; i < N; i++) { printf("%d ", a[i]); } printf("\n"); } int main(int argc, char *argv[]) { srand(time(NULL)); memset(a, 0, N); print_array(); gen_random(); print_array(); return 0; }
20
http://blog.csdn.net/yuan_ping/article/details/8449406