C언어의 기초 문법

#include <time.h>

난수 발생

 아... 또 탄식하시면서 오셨을텐데, 이건 그런거 아닙니다. 저얼대요. string.h 생각하지 마세요. 훨씬 더 쉽습니다. time.h는 대표적으로 난수 발생(rand) 함수가 있는데, 이걸 이용할 것입니다.

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

int main(){
    int a[10], i;
    srand(time(NULL));
    for (i = 0; i < 10; i++)
        a[i] = rand() % 50;
    for (i = 0; i < 10; i++)
        printf("%d\n", a[i]);
}

자, 해석 들어갈게요

일단 배열 a를 정해두고, 반복변수 i를 정할 것입니다. 여기 뒤에 요상한 코드가 있는데, 이 코드는 랜덤 함수(rand)를 이용할 것이라는 준비단계입니다. 이 srand를 안 한다면 rand를 못 쓰지요. 이 괄호 안에 time(NULL)은 그냥 '이게 그 난수 정하는 거구나'라고 생각하시면 되요. 여기 NULL은 조금 다른 뜻입니다.

다음 반복문을 돌려서 a에 난수를 집어넣고, 출력합니다. 여기에서 % 50은 'rand()를 50으로 나눈 나머지'라고 보시면 됩니다. 그러니까 rand()는 어떤 수든 만듭니다. 1억이 넘을 수도 있죠. 그런데 50으로 나눈 나머지로 설정을 하면 무조건 난수의 값은 0~49까지 됩니다. 잘 이해가 안 되신다면 괜찮습니다. 이건 수학이거든요^^;

댓글

댓글 본문
  1. 잘 보고 있습니다.

    이전 챕터에서 나왔던 string.h도 그렇고, 이 함수 또한 time.h 라는 헤더파일을 include한 후에 사용하는 것이겠죠? 예제 소스코드에는 추가가 안되었길래 궁금해서 질문 드립니다.
  2. Joel
    자 여기에서 하나! for문에서 중괄호를 안 썼죠? 어떤 문법이든 중괄호 안에 1줄밖에 없다면 중괄호를 생략해도 괜찮습니다^^ 나중에 재귀함수에서 아주 많이 나올 거니까 잘 익혀두세요!
버전 관리
Joel
현재 버전
선택 버전
graphittie 자세히 보기