난수를 만들어봅니다.
rand함수는 시드(seed)라는 값에의해 생성되므로, srand()
를 이용하여 시드값을 설정해주어야 합니다.
아래 코드에서는 시간을 seed로 이용했습니다.
#include<iostream>
#include<time.h>
using namespace std;
int main() {
srand((unsigned int)time(0));
return 0;
}
0에서 100까지의 난수를 생성했습니다.
% 100만 하게된다면 0-99까지만 나옵니다.
#include<iostream>
#include<time.h>
using namespace std;
int main() {
srand((unsigned int)time(0));
cout << "random : " << (rand() % 100 + 1) << endl;
return 0;
}
- rand 함수를 쓰려면 <stdlib.h> 헤더가 있어야 합니다. (이 예제 코드는 비주얼 스튜디오에서 작업하여 해당 헤더가 참조되지 않았습니다. 참고부탁드립니다.)
생성된 난수로 확률도 지정할 수 있습니다.
10000까지 나오게한 뒤, 100.00으로 나오게 합니다.
#include<iostream>
#include<time.h>
using namespace std;
int main() {
srand((unsigned int)time(0));
cout << "random : " << (rand() % 100 + 1) << endl;
double percent;
percent = rand() % 10000 / 100.f;
cout << "random : " << percent << endl;
if(percent <= 80.f)
cout << "in 80%" << endl;
if (percent <= 60.f)
cout << "in 60%" << endl;
if (percent <= 40.f)
cout << "in 40%" << endl;
if (percent <= 20.f)
cout << "in 20%" << endl;
if (percent <= 1.f)
cout << "in 1%" << endl;
return 0;
}
- random_device : 하드웨어 시드
- uniform_int_distribution : 정수
- uniform_real_distribution : 실수
- mt19937_64 : 난수 엔진
rand보다 명확한 난수를 추출해내기 위해 사용합니다.
#include <iostream>
#include <random>
using namespace std;
void main(void)
{
int min = 0;
int max = 10;
random_device r;
mt19937_64 rnd(r());
uniform_int_distribution<int> range(min, max); // std::uniform_real_distribution
cout << range(rnd) << endl;
}
- 과제-1 : 기상예측 프로그램 만들기 (비: 30%, 눈:10%)
예제 코드:
#include<iostream>
// time.h를 가져오는 코드를 작성합니다.
using namespace std;
int main() {
srand((unsigned int)time(0));
//(연습 코드)
cout << "random : " << (rand() % 100 + 1) << endl;
double percent;
//percent = ???;
//확률을 xx.xx 형식으로 출력되도록 작성합니다.
float rain_percent = 0;
// 이곳에서 주어진 날씨 확률에 따른 현재 비 예측을 작성합니다.
float snow_percent = 0;
// 이곳에서 주어진 날씨 확률에 따른 현재 눈 예측을 작성합니다.
cout << rain_percent << endl;
cout << snow_percent << endl;
return 0;
}