1주차 객체프로그래밍 C++(랜덤한 수 출력) 6
본문 바로가기
코딩공부/C++기초

1주차 객체프로그래밍 C++(랜덤한 수 출력) 6

by 지누이야기 2024. 3. 6.
반응형

저번 시간에 이스케이프 시퀀스에 대해서 설명을 했습니다.

 

이번시간에는 랜덤함수에 대해서 배워 보겠습니다.

 

C++을 하면서 랜덤을 쓰는 일은 상당히 많습니다. 이러한 랜덤함수를 이용하려면 라이브러리 2개를 가지고 와야 합니다.

 

첫 번째 라이브러리는 cstdlib로, #include <cstdlib>를 쓰면 rand(), srand()라는 내장 함수를 사용할 수 있습니다.

 

두 번째 라이브러리는 ctime으로 #include <ctime>를 쓰면 time()라는 내장 함수를 사용할 수 있습니다. 이 time()은 랜덤 한 수 출력을 위해 현재시간을 사용하므로 현재시간을 이용할 수 있게 도와주는 함수입니다.

 

이제 이 라이브러리 두 개를 활용해서 랜덤한 수들을 출력해 보겠습니다. 그런데 만약 ctime 라이브러리 없이 난수(랜덤 한 수)를 출력해 보면 어떻게 될까요

 

 

#include<iostream>
#include<cstdlib>

using namespace std;

int main(){
	cout<<rand();
	cout<<rand();
}

 

그림 1

 

몇 번을 해도 난수는 같은 숫자가 나올 것입니다. 왜냐하면 컴퓨터에서 난수생성하는 방식이 정해져 있는데 이러한 고정된 seed값으로 난수를 생성하니까 계속해서 같은 값이 나오게 됩니다. 그렇기 때문에 ctime을 이용해서 무작위 난수를 출력합니다.

 

사실 이것도 무작위라고 보기는 어려워서 최근에는 다른 방식을 쓰는데 다음에 시간 날 때 작성해 보겠습니다.

 

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    srand((unsigned int)time(NULL));//씨드값으로 현재시간을 이용
    cout<<rand();
    cout<<rand()%6;// 6으로 나눈 값의 나머지를 출력
}

그림 2

 

위처럼 ctime을 사용하게 되면 time()을 이용할 수 있고, 이 내장함수를 통해 시드값을 넣어서 랜덤 한 수를 뽑아낼 수 있게 하는 srand()를 이용하여 무작위 한 랜덤 수를 뽑아낼 수 있습니다.

 

그리고 %(나머지 연산자)를 활용하여 자신이 최대로 뽑아내고 싶은 값의 한계치를 정할 수 있습니다.

반응형

댓글