// 실습1. 3 ~ 7 사이의 랜덤한 숫자를 출력하는 프로그램을 작성하자.
// 실습2. 가장 작은 값과 큰 값을 입력 받아서, 그 사이의 임의의 값을 출력하는 프로그램을 작성하자.
// 실습3. 프로그램을 실행하면 내부적으로 1 ~ 10 사이의 숫자가 정답으로 정해진다.
// 유저가 1 ~ 10 사이의 숫자를 입력하면 맞으면 true, 틀리면 false를 출력한다. (숫자 맞추기 게임)
#include <iostream>
#include <string>
using namespace std;
int main()
{
// 실습1
srand(time(NULL)); // 다양한 난수를 위해 time함수를 사용
int number = rand() % (7 - 3 + 1) + 3; // 랜덤값을 담을 변수 선언
cout << number << endl; // 랜덤값 출력
// 실습2
int sNum; // 작은 값을 담을 변수 선언
int bNum; // 큰 값을 담을 변수 선언
cout << "작은 값을 입력하시오 : "; cin >> sNum; // 작은값 입력
cout << "큰 값을 입력하시오 : "; cin >> bNum; // 큰 값 입력
int result = rand() % (bNum - sNum + 1) + sNum; // 결과값 대입
cout << "임의의 값은? : " << result << endl; // 결과값 출력
// 실습3
int tenRan = rand() % (10 - 1 + 1) + 1; // 1~10 사이의 정답을 담을 변수 선언
int inputNum; // 사용자 입력값을 담을 변수 선언
cout << "오늘의 행운의 번호는? (1~10사이 입력하시오): "; cin >> inputNum; // 숫자선택 후 입력
cout << boolalpha; // 1, 0 -> true, false로 변환
// 사용자 입력이 랜덤값이랑 같으면 true, 다르면 false를 출력
(inputNum == tenRan) ? cout << "[" << true << "]" << "정답입니다!" : cout << "[" << false << "]" << "꽝!";
return 0;
}
rand() : 랜덤 난수 생성이 아닌, 매번 같은수를 생성한다.
srand(time(NULL)) : 다양한 난수를 생성할수 있다.
- 시간에 따라 수열의 배치가 바뀐다
- 하위 코드로 작성된 rand()함수에도 적용된다.
- 왠만하면 land() 함수는 srand와 같이 응용해서 쓰는편이 좋다.
원하는 범위내의 난수 출력
rand() % (최댓값 - 최솟값+ 1) + 최솟값
범위내의 난수를 출력하는 방법은 rand()와 최댓값, 최솟값의 사칙연산으로 결정된다.
ex) 최솟값2, 최댓값 8 범위내에서 랜덤값을 출력한다고 가정했을때 rand() % 7 + 2가 된다.
랜덤 추출시 0,1,2,3,4,5,6 + 2 가되어 2,3,4,5,6,7,8 경우의수가 나오게 된다.
반응형
'Programming > C | C++ | Unreal' 카테고리의 다른 글
[C / C++] 문자열 주요함수 구현. (0) | 2022.05.02 |
---|---|
[C++ ] 구조체 (0) | 2022.04.15 |
[C++] 여러가지 연산 (0) | 2022.04.07 |
[C++] 데이터 타입 / 변수 / 표기법 (0) | 2022.04.06 |
[C++] 자료형 (0) | 2022.04.05 |