반응형
[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자리씩
🔽 프로그램 다운
반응형
'C++, MFC' 카테고리의 다른 글
[C++/MFC] 텍스트 파일의 인코딩 확인하는 방법 (0) | 2022.09.16 |
---|---|
[MFC] 재배포 패키지 없이 프로그램 배포하는 방법 (0) | 2022.08.29 |
[C / C++] 난수, 랜덤 숫자 구하기 rand() (0) | 2022.08.19 |
[C++ / MFC] 실행중인 프로세스 찾기 / 종료시키기 (0) | 2022.08.09 |
[C++ / MFC] 레지스트리 값 저장, 불러오기 (RegCreateKeyEx) (0) | 2022.08.06 |
댓글