프로그래밍 / C++ / 언리얼

Programming/C | C++ | Unreal

[C++] rand(), 삼항연산자 이용

아트성 2022. 4. 12. 09:14
//  실습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