ITGenerations
[c++] p144. n3. 랜덤 수를 발생 시키는 Random 클래스를 만들자 본문
랜덤 수를 발생 시키는 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;
}
'프로그래밍 > c++ 명품프로그래밍 ' 카테고리의 다른 글
[c++] p145. n5 짝수 홀수를 선택할 수 있도록 생성자를 가진 SelectableRandom 클래스를 (0) | 2017.11.25 |
---|---|
[c++] p145. n4. 문제 3번을 참고하여 짝수 정수만 랜덤하게 발생 blah blah (0) | 2017.11.23 |
[c++] p144. n2. 날짜를 다루는 Date 클래스를 작성하고자 한다. ~ (0) | 2017.11.23 |
[c++] p143/1. main()의 실행 결과가 다음과 같도록 Tower 클래스를 작성하라 (0) | 2017.11.22 |
[c++] 영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 블라블라 (0) | 2017.11.14 |