// 실습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 |