반응형
로또 프로그램 만들기
1. 1~45까지의 숫자 중 6개를 랜덤으로 뽑는다.
2. 중복된 숫자가 나오면 안된다.
실습
int iLotto[45] = {};
srand((unsigned int)time(0));
for (int i = 0; i < 6; i++)
{
cout << "랜덤으로 뽑은 번호 : " << rand() % 45 + 1 << endl;
}
- 문제점 : 중복된 숫자가 나올 수 있음
문제 해결을 위해 "Swap 알고리즘"을 이용하여 중복되지 않게 뽑아보기
//swap 알고리즘 실습
int iNum1 = 1, iNum2 = 2, iNum3;
iNum3 = iNum1;
iNum1 = iNum2;
iNum2 = iNum3;
//중복된 숫자가 나오지 않게 하기 위해
for (int i = 0; i < 45; i++)
{
//1~45까지의 숫자를 넣어줌
iLotto[i] = i + 1;
}
//섞기
int iTemp, idx1, idx2;
//100번 정도 골고루 섞는다
for (int i = 0; i < 100; i++)
{
idx1 = rand() % 45;
idx2 = rand() % 45;
//swap 알고리즘
iTemp = iLotto[idx1];
iLotto[idx1] = iLotto[idx2];
iLotto[idx2] = iTemp;
}
cout << endl;
for (int i = 0; i < 45; i++)
{
cout << "섞였는지 체크 : " << iLotto[i] << ", ";
}
cout << endl;
cout << endl;
for (int i = 0; i < 6; i++)
{
cout << "6개 뽑기 : " << iLotto[i] << "\t";
}
cout << "보너스 번호 : " << iLotto[6] << endl;
결과
반응형
'C++ > C++입문' 카테고리의 다른 글
[C++] 빙고 게임_2 (0) | 2025.03.26 |
---|---|
[C++] 빙고 게임_1 (0) | 2025.03.25 |
[C++] 배열 (0) | 2025.03.25 |
[C++] do while문 (0) | 2025.03.25 |
[C++] for문 (0) | 2025.03.24 |