신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

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;
}​

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기