C++/C++입문

[C++] 로또 만들기

나는야 개발자 2025. 3. 25. 07:07
반응형

로또 프로그램 만들기
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