ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 6장 7번
    C++ 2018. 11. 2. 17:54

    7. 다음과 같은 static 멤버를 가진 Random 클래스를 완성하라. 그리고 Random 클래스를 이용하여 다음과 같이 랜덤한 값을 출력하는 main() 함수도 작성하라. main()에서 Random 클래스의 seed() 함수를 활용하라.


    소스코드


    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    using namespace std;
    class Random {
    public:
        // 항상 다른 랜덤수를 발생시키기 위한 seed를 설정하는 함수
        static void seed() { srand((unsigned)time(0)); } // 씨드 설정
        static int nextInt(int min = 0, int max = 32767); // min과 max 사이의 랜덤 정수 리턴
        static char nextAlphabet(); //랜덤 알파벳 문자 리턴
        static double nextDouble(); // 0보다 크거나 같고 1보다 적은 랜덤 실수 리턴
    };
    int Random::nextInt(int min, int max) {
        int r = rand() % (max - min + 1) + min;
        return r;
    }
    char Random::nextAlphabet() {
        char c = rand() % 2; // 대문자와 소문자로 경우를 나눔
        if (c == 0) { // 대문자
            c = (rand() % 26) + 65;
            return c;
        }
        else // 소문자
        {
            c = (rand() % 26) + 97;
            return c;
        }

    }
    double Random::nextDouble() {
        double d = rand() / (double)(RAND_MAX + 1); // 0부터 32767의 정수를 32768로 나누면 실수가 나온다
        return d;
    }

    int main() {
        Random::seed();
        cout << "1에서 100까지 랜덤한 정수 10개를 출력합니다" << endl;
        for (int i = 0; i < 10; ++i) {
            cout << Random::nextInt(1, 100) << ' ';
        }
        cout << endl;
        cout << "알파벳을 랜덤하게 10개를 출력합니다" << endl;
        for (int i = 0; i < 10; ++i) {
            cout << Random::nextAlphabet() << ' ';
        }
        cout << endl;
        cout << "랜덤한 실수를 10개를 출력합니다" << endl;
        for (int i = 0; i < 5; ++i) {
            cout << Random::nextDouble() << ' ';
        }
        cout << endl;
        for (int i = 0; i < 5; ++i) {
            cout << Random::nextDouble() << ' ';
        }
        cout << endl;
    }


    실행결과




    'C++' 카테고리의 다른 글

    명품 C++ 6장 9번  (0) 2018.11.02
    명품 C++ 6장 8번  (2) 2018.11.02
    명품 C++ 6장 6번  (0) 2018.11.02
    명품 C++ 6장 5번  (0) 2018.11.02
    명품 C++ 6장 4번  (0) 2018.11.02

    댓글

© 2018 TISTORY. All rights reserved.