반응형
이번 포스팅에서 소개할 것은 random_device 라는 난수 생성 방식이다.
<random> 헤더에 있는 random_device는 시드를 하드웨어의 리소스로 만든다.
하드웨어의 리소스라고 하면 노이즈, 마우스 움직임 등이 있다.
헤더파일 선언, 객체 선언, 출력 단 3줄만이 필요하다.
유의할 점이 있다면 출력 값은 int형의 범위를 초과할 수도 있다는 점이다.
아래 사진을 보면 28억이 출력되는 모습을 볼 수 있다.
그러나, 범위는 프로그래머가 %와 +/- 를 활용하여 쉽게 조절할 수 있다.
#include <iostream>
#include <random>
using namespace std;
int main() {
random_device rd;
cout << rd();
}
srand, time 같은걸 쓰는 방법보다 훨씬 간단하지 않은가?
이를 응용해서 간단한 로또 번호 생성기를 만들어보았다.
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
using namespace std;
vector<int> lotto;
bool selected[46]; //중복 방지
int main() {
random_device rd;
int ran;
while (lotto.size()!=6) {
ran = rd() % 45 + 1; // 1≤ran≤45;
if(!selected[ran]) {
lotto.push_back(ran);
selected[ran] = true;
}
}
sort(lotto.begin(), lotto.end()); //오름차순 정렬
for (int i = 0; i < 6; i++) {
cout << lotto[i] << " "; //출력
}
}
반응형
'유용한 정보, 링크' 카테고리의 다른 글
Spring 라이브러리 버전 정보 사이트 (0) | 2021.01.19 |
---|---|
메모장으로 열기 메뉴 추가하기 (1) | 2020.12.04 |
매우 편한 데이터관리 C++ Map 사용법! (0) | 2020.09.25 |
C++ Vector 사용법 (0) | 2020.09.11 |
C++ Vector 중복 요소 제거하기 (0) | 2020.09.11 |
댓글