«   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++] p145. n4. 문제 3번을 참고하여 짝수 정수만 랜덤하게 발생 blah blah 본문

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

[c++] p145. n4. 문제 3번을 참고하여 짝수 정수만 랜덤하게 발생 blah blah

ITGenerations 2017. 11. 23. 22:31


 p145. n4. 문제 3번을 참고하여 짝수 정수만 랜덤하게 발생시키는 EvenRandom 클래스를 작성하고

 EvenRandom 클래스를 이용하여 10개의 짝수를 랜덤하게 출력하는 프로그램을 완성하라.

 0도 짝수로 처리한다.

--------------------------------------------------------------------------------------------------------------------------------


#include <iostream>

#include <ctime>

#include <random>

#define RAND_MAX 32767

using namespace std;

class EvenRandom 

{

public:

int n;

EvenRandom()

{

srand((unsigned)time(NULL));

}


int next();


int nextInRange(int low, int high);



};



// 짝수 = even numbers

// 홀수 = odd numbers


// 0 to MAXRAND get even-numbers

int EvenRandom::next()

{

int i;

do

{

i = rand();

} while (i%2==1);

return i;

}



// 2 to 10 get even-numbers

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

{

int range;

do

{

range = a+(rand()%(b-a+1));

} while (range%==1);

return range;

}


int main()

{

EvenRandom r;

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


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

{

int n = r.next();

cout << n << ' '; // Tab으로 간격 조절

}


cout << endl;


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

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

{

int n = r.nextInRange(2, 10);

cout << n << ' '; // Tab으로 간격 조절

}


cout << endl;

}