본문 바로가기
  • 부자가 될 남자
프로그래밍/C

C언어 랜덤, 난수 초기화란?

by ㅍ우주 2023. 5. 15.

난수 초기화란

난수 초기화란, 랜덤한 수가 반복되어 나오는 현상을 없애는 과정이라고 생각하면 될듯하다. 

난수 초기화를 하지 않으면, 랜덤 함수에서 랜덤한 수가 나오는 듯 싶긴 하나 코드를 또 한 번 실행하였을 때 출력되는 값이 동일하여

마치 랜덤한 값이 어딘가에 저장되고, 저장된 값이 계속 나오는 듯하다.

난수 초기화를 위해선

srand(time(NULL));

을 사용하면 되며, 아래는 그 예시이다.


난수 초기화 이전

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main(void) {
    printf("난수 초기화 이전..\n");
    for (int i = 0; i<10; i++) {
        printf(" %d ", rand()%10);
    }
    return 0;
}

난수 초기화 이전엔, 다음과 같이 랜덤한 수가 저장되어 랜덤하지 않게 되는 것이다.


난수 초기화 이후

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main(void) {
    printf("난수 초기화 이후..\n");
    srand(time(NULL)); // 난수 초기화
    for (int i = 0; i<10; i++) {
        printf(" %d ", rand()%10);
    }

    return 0;
}

난수 초기화 이후엔 랜덤한 수가 반복되지 않고 계속 랜덤하게 나온다.