궁금해서 미칠 것 같아요

공부하다가 무작위수를 배열하는 부분이 나와서 함수로 빼서 해봤는데 원하는 결과가 안나옵니다. 밑에처럼하면 같은수만 10개나와버리는데 어떻게하죠???

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int m(void);
int main(void)
{
	int i;
	int data[10];
	
	for (i = 0; i < 10; i++)
		data[i] = m();

	for (i = 0; i < 10; i++) {
		printf("%d ", data[i]);
	}

return 0;

}

int m(void)
{
	int g;
	
	srand(time(NULL));
	g = rand() % 100 + 1;
	return (g);

}

이 부분을 main에서 처음에 한번만 해보세요.

3 Likes

그런데 처음했을때 안되고 바꾸니까 되는 이유가 뭔지 혹시 아세요? 제지식으로는 이해가되지않아요

정말감사합니다. 아주 많은 도움이 되었습니다.

안녕하세요.

C언어의 rand함수는 미리 뽑혀있는 난수표에서 숫자를 반환합니다.
srand함수를 통해 그 시작을 정할 수 있죠.

하지만 rand를 하기전에 매번 같은 srand로 초기화를 하게된다면,
난수를 뽑을때마다 난수표의 같은 곳에서 계속 시작하게 되겠죠?

그래서 같은 숫자만 나오는겁니다.

아주감사합니다. 그런 이유가 있었군요.