본문 바로가기

C언어/C_지식_정리

[C 언어] 무작위로 숫자 생성하기 (난수 생성기)

숫자를 랜덤으로 뽑아서 출력하게 하는 코드이다.

난수 생성기
#include <stdio.h>
#include <stdlib.h> //srand, rand를 사용하기 위한 헤더파일
#include <time.h> // time을 사용하기 위한 헤더파일

int main() 
{
	srand(time(NULL)); // 난수 초기화
	for (int i = 0; i< 10; i++) // 10회 반복
	{
		int random = rand() % 5; // 0 ~ 4 사이의 숫자를 뽑아서 random 변수에 저장
		printf("%d ", random); // 출력
	}
	return 0;
}

(실행결과)

 

 

먼저, rand함수는 rand % (숫자) 를 함으로써 원하는 숫자의 범위를 지정할 수 있다.

ex) rand() % 5 => 0 ~ 4사이의 랜덤한 숫자

ex) (rand() % 5) + 1 => 1 ~ 5사이의 랜덤한 숫자

그리고 7번째 줄인 srand(time(NULL)); 이 필요한 이유는 컴퓨터 내부에 저장된 난수를 초기화 하기 위해서이다. srand(time(NULL)); 가 없게 되면 처음 실행할때 생성된 난수가 저장이 되어서 다음번 실행을 해도 계속 같은 결과값만 나오게 된다.

srand(time(NULL));이 빠졌을때
#include <stdio.h>
#include <stdlib.h>

int main() 
{
	for (int i = 0; i< 10; i++)
	{
		int random = rand() % 5;
		printf("%d ", random);
	}
	return 0;
}

(실행결과)

 

첫번째 실행
두번째 실행

 

 

둘이 같은 사진처럼 보이지만 다른 사진이다.

하지만 srand(time(NULL)); 을 사용하게 된다면, 실행 할 때마다 새로운 결과값이 나오게 될 것이다.