C++ 3-2 과제

BakJeonghyun·2022년 9월 16일
0

전공C++

목록 보기
7/20

실습 과제

5.

랜덤 수를 발생시키는 Random 클래스를 만들자. Random 클래스를 이용하여 랜덤한 정수를 10개 출력하는 사례는 다음과 같다. Random 클래스가 생성자, next(), nextInRange()의 3개의 멤버 함수를 가지도록 작성하고 main() 함수와 합쳐 하나의 cpp 파일에 구현하라.

<실행결과>
-- 0에서 32767까지의 랜덤 정수 10 개 --
3975 1512 15096 4317 14047 30968 21702 24510 5530 6633

-- 2에서 4 까지의 랜덤 정수 10 개 --
2 3 3 2 2 4 2 3 4 2

#include <iostream>
#include <cstdlib>	
// RAND_MAX 상수는 <cstdlic>헤더 파일에 선언되어 있는 정수 32767
#include <ctime>
using namespace std;

class Random {
public:
	int next();
    int nextInRange(int sp, int ep);
};

int Random::next() {
	srand((unsigned)time(0));
	int n = rand();
    return n;
}

int Random::nextInRange(int a, int b) {
	srand((unsigned)time(0));
    int n = rand()%b + a + 1;
    return n;
}

int main() {
	Random r;
    cout << "-- 0에서 " << RAND_MAX << "까지의 랜덤 정수 10 개 --" << endl;
    for(int i=0; i<10; i++) {
    	int n = r.next();	//0에서 RAND_MAX(32767) 사이의 랜덤한 정수
        cout << n << ' ';
    }
    cout << endl << endl << "-- 2에서 " << "4 까지의 랜덤 정수 10 개 --" << endl;
    for(int i=0; i<10; i++) {
    	int n = r.nextInRange(2,4);
        cout << n << ' ';
    }
    cout << endl;
}

힌트

랜덤 정수를 발생시키기 위해 다음 두 라인의 코드가 필요하고, 와 헤더 파일을 해야 한다.

srand((unsigned)time(0));	//시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정
int n = rand();	//0에서 RAND_MAX(32767) 사이의 랜덤한 정수 발생

#include <iostream>
#include <cstdlib>	
// RAND_MAX 상수는 <cstdlic>헤더 파일에 선언되어 있는 정수 32767
#include <ctime>
using namespace std;

class Random {
public:
    int next();
    int nextInRange(int sp, int ep);
};

int Random::next() { 
    int n = rand();
    return n;
}

int Random::nextInRange(int a, int b) {
    int n = rand() % b + a + 1;
    return n;
}

int main() {
    srand((unsigned)time(0));

    Random r;
    cout << "-- 0에서 " << RAND_MAX << "까지의 랜덤 정수 10 개 --" << endl;
    for (int i = 0; i < 10; i++) {
        int n = r.next();	//0에서 RAND_MAX(32767) 사이의 랜덤한 정수
        cout << n << ' ';
    }
    cout << endl << endl << "-- 2에서 " << "4 까지의 랜덤 정수 10 개 --" << endl;
    for (int i = 0; i < 10; i++) {
        int n = r.nextInRange(2, 4);
        cout << n << ' ';
    }
    cout << endl;
}
profile
I just got started a blog.

0개의 댓글