본문 바로가기
C++, MFC

[C++/MFC] rand()함수를 이용하여 로또 번호 생성해보기

by dev_drive 2022. 8. 28.
반응형

 

 

[C / C++] 난수, 랜덤 숫자 구하기 rand()

1. 랜덤 숫자 구하기 랜덤 숫자는 rand() 함수를 사용하여 구합니다 (rand() - 0과 RAND_MAX(32767) 사이의 난수 정수를 반환하는 함수) int nNum1 = rand(); int nNum2 = rand(); int nNum3 = rand(); std::cout..

dev-drive.tistory.com

이전에 포스팅했던 rand()함수를 응용하여 랜덤으로 로또 번호를 만드는 방법에 대해 설명하고

간단하게나마 프로그램을 만들어봤는데 이것도 사용해보실 수 있게 공개하겠습니다.

 

 

 

■ 1~45의 랜덤 숫자를 생성

srand((unsigned int)time(NULL));

int nRandNum = rand() % 45 + 1;

단순하게 이걸 6번 반복하면 로또 번호가 완성되겠지만

아시다시피 로또 번호는 중복되면 안되니 중복을 없애는 소스도 추가해줍니다. 

 

 

 

 

■ 1~45의 랜덤 숫자 생성 중 중복된 숫자 제외

srand((unsigned int)time(NULL));
int nNum[6] = { 0, };
int nRandNum = 0;

for (int i = 0; i < 6; i++)
{
	nRandNum = rand() % 45 + 1;
	nNum[i] = nRandNum;

	BOOL bSame = FALSE;
	for (int j = 0; j < i; j++)
	{
		if (nNum[j] == nRandNum)   // 이전에 생성된 번호와 비교
		{
			bSame = TRUE;
			break;
		}
	}
	if (bSame)   // 같은게 있으면 다시 반복
	{
		i--;
		continue;
	}
}

이런 기능들을 활용해서 프로그램으로 제작해봤습니다.

 

 

 

 

로또 번호 생성 프로그램

 

반복 횟수(1~5)와 랜덤 숫자 추출방식을 선택하여 번호를 추출할 수 있습니다.

단순히 위 기능만 사용한 것은 아니고 여러번 반복해서 가장 많이 나온 숫자가 선택되도록 구현했습니다. 

 

※ 각 버튼에 대한 기능입니다.

랜덤 : 1~45까지 완전 랜덤

균등 1 : 1~22 3자리, 23~45 3자리

균등 2 : 1~15 2자리, 16~30 2자리, 31~45 2자리

균등 3 : 1~7, 8~15, 16~22, 23~30, 31~37, 37~45 균등하게 1자리씩

 

 

🔽 프로그램 다운

rand.exe
3.88MB

 

 

반응형

댓글