«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ITGenerations

[c++] p144. n3. 랜덤 수를 발생 시키는 Random 클래스를 만들자 본문

프로그래밍/c++ 명품프로그래밍

[c++] p144. n3. 랜덤 수를 발생 시키는 Random 클래스를 만들자

ITGenerations 2017. 11. 23. 20:56


랜덤 수를 발생 시키는 Random 클래스를 만들자. Random 클래스를 이용하여 한 정수를 10개 출력하는 사례는 

다음과 같다. Random 클래스가 생성자,next(),nextInRange()의 3개의 멤버 함수를 가지도록 작성하고 main()함수와

합쳐 하나의 cpp 파일에 구현하라.


#include <iostream>

#include <ctime> //시간값을 문자열로 변환하고자 현지 표준 시간대 설정에 대한 조정합니다.

//#include <cstdlib> //문자열 변환, 의사 난수 생성, 동적 메모리 관리 등의 함수들을 포함하고 있다.

#include <random>        // c++에서 새로 재정된 라이브러리(해더)

#define RAND_MAX 32767 //RAND_MAX 최대값 

using namespace std;



class Random

{

public:

int n;

Random()

{

srand((unsigned)time(NULL)); //난수발생, 원형 void srand(unsigned seed)

// ex) srand((unsigned int)time(NULL))

}


int next()

{

return rand()%RAND_MAX;

}

int nextInRange(int a, int b);


};




int Random::nextInRange(int a, int b)

{

return rand() % (b - a + 1) + a;

}




// 0~9 숫자 rand()%10 -> 0~9

// 1~10 rand()%10+1 ->  (0~9)+1 -> 1~10

// a to b (rand()%(b-a+1))+a ->(0~b-a)+a  -> a~b


int main()

{

Random r;

cout << "-- 0에서" << RAND_MAX << "까지의 랜덤 정수 10개 --" << endl;

for (int i = 0; i < 10; i++)

{

int n = r.next();            // 0 to 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); // 2에서 4사이의 랜덤한 정수

cout << n << ' ';

}

cout << endl;

}