신규 블로그를 만들었습니다!
Lotto Program
숫자 1 ~ 45 까지 배열을 이용해서 담아둔다.
int iNum[45] = {};
for (int i = 0; i < 45; i++) {
iNum[i] = i + 1;
}
<time.h> 헤더파일 안의 time()을 이용해서 seed 생성한다.
srand((unsigned int)time(0)); // time seed
중복된 값이 나오지 않게 하기 위해 숫자를 랜덤으로 뽑는것이 아니라,
2개의 인덱스 값을 랜덤으로 뽑아서 스왑 하는 형식으로 한다.
int iTemp, idx1, idx2;
for (int i = 0; i < 100; i++) {
idx1 = rand() % 45;
idx2 = rand() % 45;
iTemp = iNum[idx1];
iNum[idx1] = iNum[idx2];
iNum[idx2] = iTemp;
}
이렇게 함으로서 중복된 숫자가 나오지 않는다.
결과를 출력해 본다.
// 결과 출력
for (int i = 0; i < 5; i++) {
cout << (i+1) << "번째 번호 : " << iNum[i] << endl;
}
cout << "보너스 번호 : " << iNum[5] << endl;
전체 코드
// Lotto Program
#include <iostream>
#include <time.h> // 랜덤 함수를 사용하기 위해
using namespace std;
int main(void) {
// 1부터 45까지의 수
int iNum[45] = {};
for (int i = 0; i < 45; i++) {
iNum[i] = i + 1;
}
srand((unsigned int)time(0)); // time seed
// 인덱스를 랜덤으로 뽑아서 스왑만하므로, 중복된 값은 나오지 않는다.
// Suffle
int iTemp, idx1, idx2;
for (int i = 0; i < 100; i++) {
idx1 = rand() % 45;
idx2 = rand() % 45;
// swap
iTemp = iNum[idx1];
iNum[idx1] = iNum[idx2];
iNum[idx2] = iTemp;
}
// 결과 출력
for (int i = 0; i < 5; i++) {
cout << (i+1) << "번째 번호 : " << iNum[i] << endl;
}
cout << "보너스 번호 : " << iNum[5] << endl;
return 0;
}

'Language > C&C++' 카테고리의 다른 글
C++ :: 연산자 (사칙 연산자, 관계 연산자, 논리 연산자) (0) | 2018.03.02 |
---|---|
C++ :: 야구 게임(Baseball) 프로그램 만들기 (1) | 2018.02.22 |
C++ :: 함수를 이용한 변수 초기화 방법 #4 (0) | 2018.02.18 |
C++ :: 자료형과 상수(const, define), 변수 #3 (0) | 2018.02.18 |
C++ :: std:: 접두어와 iostream 헤더파일 #2 (0) | 2018.02.18 |
최근댓글