안녕하세요!!

오늘은 랜덤 함수라는 것을 들고 와 보겠습니다.

랜덤 함수란?

제가 함수를 정의하는 것을 알려드린 것으로 기억하고 있습니다.

그래서 제가 이번에는 그 정의하는 것을 재미있게 매번 컴퓨터가 정해주는 값이 출력이 되게 만들어 보겠습니다.

일단 준비물은 늘 그렇듯 비쥬얼 스튜디오(이하 vs)입니다.

일단 저는 이번 시간을 통한 추첨기를 만들어 보도록 하겠습니다.

(올해 학교 축제에 사용을 하기 위해서 말이죠)

일단 먼저 가장 기본적인 랜덤하게 나오는 값을 불러오는 소스코드를 가져오겠습니다.

1
2
3
4
5
6
7
8
9
#include<stdio.h>
#include<stdlib.h>
 
int main() {
  int Num;
  Num = rand();
  printf("랜덤 값입니다 => %d", Num);
  return 0;
}
cs

새로운 헤더파일을 생성하였습니다.

헤더파일에는 이것 외에도 여러가지 헤더파일이 존재합니다.

예를 들어서 

1
2
3
4
5
6
7
8
9
10
#include <windows.h>
#include <stdio.h>
 
int main () {
  printf("으음....\n");
  Sleep(1000);
  printf("으으으음...\n");
  return 0;
}
 
cs

라던가 말이죠

이것은 나중에 따로 파서 알려드릴 건데 미리 귀띔을 해놓자면

대기라는 것입니다.

개에게 "기다려!"하는 것과 같은 대기명령입니다.

나중에 추가적인 설명을 하도록 하겠습니다.

그리고 새로 추가가 된 헤더인 stdlib.h는

랜덤함수인 rand가 들어있는 헤더입니다.

그러면 이제 다시 사용 방법에 대하여 설명을 하도록 하겠습니다. 

늘 그렇듯 int Num;으로 Num이라는 변수를 선언합니다.

그리고 그 Num이라는 변수에 rand()라는 랜덤함수를 저장합니다.

마지막으로 printf로 그 값을 출력하여 랜덤값인지 아닌지를 확인 합니다.

그리고 return으로 0번째 줄로 돌려 보냅니다.

이렇게 설명을 하였지만 무엇인가 부족한 느낌을 받을 수 밖에 없을 것입니다.

저기요....? 왜 같은 값만 주구장창 나오는 것인가요??? 라고 말이죠.

그러면 여기에 시간(s)당 이라는 변화를 주어 봅시다.

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
int main() {
  int Num;
  srand(time(NULL));
  Num = rand();
  printf("랜덤 값입니다 => %d", Num);
  return 0;
}

두개의 코드가 추가가 되었습니다.

하나는 헤더 time.h가 추가가 되었고, 하나는 srand(time(NULL));이 추가가 되었습니다.

이 두개가 하는 시간(s)당이라는 변화를 줍니다.

자세히 보면 srand(time(NULL)); 에서

srand는 함수의 원형이되고

time은 시간을 담당하게 되는 것이고

NULL과 time이 같이 만나게 되어서 1초마다 리턴을 하게 됩니다.

이 강좌를 보면서 계속 익숙해지시는 방법이외에는 전혀 없다고 봅니다.

그리고 이것을 실제로 실행을 시킨다면 의문이 하나 생길 것입니다.

범위를 지정해 줄수는 없는 것인가?? 하면서 말이죠.

가능합니다.

실제로는 32767이라는 너무나도 큰 수까지 존재를 하는데.... 솔직히 100이면 충분하다고 느껴지는 것은 저만 그렇습니까?? 그래서 저는 100까지 하도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
int main() {
  int Num;
  srand(time(NULL));
  Num = rand() % (100+ 1;
  printf("랜덤 값입니다 => %d", Num);
  return 0;
}
cs

새로운 친구를 등장 시켰습니다.

% (100) + 1 이라는 녀석을 추가하였는데

%(최댓값) + 최솟값 이런식으로 사용을 하는 것입니다.


이번 시간에는 랜덤함수라는 것을 배워보았습니다.

랜덤함수는 사용하는 방도가 아주 많아서 앞으로 자주 보지 않을까 하고 생각을 합니다.

그러면 다음 강좌에서 보는 것으로 하고 저는 여기서 이만 마치도록 하겠습니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,