Code Bye

c语言随机数组的问题

书上有一段代码如下:
#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

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c语言随机数组的问题