정체불명의 모모
c++ 문제 : 챕터1. 주사위 게임(어서와c++은 처음이지?) 본문
- 2개의 주사위를 던져서 주사위의 합을 표시하는 프로그램을 작성해보자.
- 주사위를 던지면 랜덤한 수가 나와야 한다.
- 난수를 생성하는 코드 필요.
[ 다음과 같은 문장을 이용하여 1부터 ~ 6사이의 난수를 발생 시켜라 ]
#include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
int main( ) { srand(time(NULL)); int number = (rand( ) %6 ) +1 ; return 0; } |
빨간색글은 모르는 것들 입니다. ㅡㅜ....
이제 알아 보도록 할게요~.
rand는 아마 랜덤숫자를 배출하란 뜻인것 같습니다.
1. #include<ctime>
= 간단하게 말하면 c언어에서 시간 관련 함수를 모아놓은 라이브러리 이다. 즉, 헤더 이다.
time_t 값을 문자열로 바꾼 것 이다.
[ 참고 : https://modoocode.com/108 ]
2. #include<cstdlib>
= (cstdlib.h == stdlib.h(c언어)) 와 같은 의미이다.
난수 함수를 포함하고 있다.
rand( ) , srand( ) 함수들이 포함 되어 있다.
[ 참고 : https://mrw0119.tistory.com/57 ]
rand( )는 정확히는 난수를 발생시키는 것이 아니라
내부에 저장된 난수표에서 seed(씨드)값에 따라 난수를 뽑아오는 것 뿐이라고 합니다.
(씨드의 정확한 정의는 차차 배워나가도록 하겠습니다.)
3.srand(time(NULL));
제가 직접 난수를 srand(time(NULL)) 를 입력하지 않고 입력 해보았습니다.
이런식으로 프로그램??내에 저장되어 있는 난수들이 출력 되는 것 같습니다.
참고한 블로거에서도 같은 난수가 나열되어 있었습니다.
그런 상황을 없애고자 srand(time(NULL))을 입력하여 현재 시간(초 단위의 정수)을 얻어서 씨앗값으로
사용한 것입니다. (한번만 설정해주면 되고, 그 다음부터는 rand( ) 만 반복적으로 호출하면 난수를 계속 얻을 수 있습니다.)
void srand(unsigned int seed) // rand( ) 의 씨앗값(seed)의 설정 |
4. (rand( )% 6 ) + 1;
= rand( ) 가 반환하는 난수는 '0~RAND_MAX'의 범위에 속한 정수이며, RAND_MAX의 값은
컴파일 마다 다를 수 있습니다.
( rand( ) 로 얻을 수 있는 최대값(10진수로 32767) )
rand( ) % 값의 개수 + 시작값 |
예를 들어 1~45범위의 난수를 얻으려면, 다음과 같이 된다.
int num = rand( ) % 45 + 1 ; |
-----------------------------------------------------------------------------------------------------------------------------------
다 배웠으니 주사위 게임을 작성 해보자.
#include<iostream> #include<ctime> #include<cstlib>
using namespace std;
int main( ) { srand(time(NULL)) ; int dice1 = rand( ) % 6 +1 ; int dice2 = rand( ) % 6 +1 ;
cout << "dice1의 주사위 숫자는 : " << dice1 << endl ; cout << "dice2의 주사위 숫자는 : " << dice2 << endl ; cout << " 두 주사위의 합은 : " << dice1 + dice2 << endl;
return 0 ; } |
ㅎㅎ 이제 확실히 이해가 간다.
오늘 모르는 부분을 공부하려 구글링 해보니 , c++은 정말 c언어를 기반으로 되어 있다는 걸 깨달았다.
아직 c언어 책을 보지않아 잘몰랐지만, 알아보려 'c언어의 정석'이라는 책을 뒤져가며 헤더 와 함수의 정의를 찾았다.
매우 잼있고 흥미롭다.
그물처럼 이어져 있어서 잼있는것 같다~ 찾는 재미도 쏠쏠하고~ 아직 초반이라 그럴지도 모르지만 ㅎㅎ
오늘은 일정이 있어 많이 못했지만 모르는걸 안것 만으로 큰 수확이다.ㅎㅎㅎ
'프로그래밍(c++)' 카테고리의 다른 글
c++ 02 : if - else (어서와c++은 처음이지?) (0) | 2019.11.26 |
---|---|
c++ 02 : 제어 구조 (어서와c++은 처음이지?) (0) | 2019.11.26 |
c++ 시작 : 수식과 연산자(어서와c++은 처음이지?) (0) | 2019.11.25 |
c++ 시작 : 출력과 입력(어서와c++은 처음이지?) (0) | 2019.11.25 |
c++ 시작 : auto(어서와c++은 처음이지?) (0) | 2019.11.25 |