-
명품 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