C/실습

[C] 랜덤함수를 이용한 로또번호 생성기

Sehyeok20 2021. 1. 22. 16:21
반응형

로또번호추출

지난번에 사용했던 랜덤함수를 사용하여 로또번호를 생성해보도록 하자.

 

int n[6] = { 0 };
int tmp;
int con = 0;

먼저 변수는 6개의 숫자를 저장할 배열을 생성한다

tmp는 오름차순으로 정렬할 때 임시로 숫자를 저장해 둘 변수이다.

con은 계속 진행할 지 아닌지를 판단하는 변수이다.

 

srand(time(NULL));
	for (int i = 0; i < 6; i++) {
		n[i] = rand() % 45 + 1;

		for (int j = 0; j < i; j++) {
			while (1) {
			if (n[j] == n[i]) {
				n[i] = rand() % 45 + 1;
			}
			else break;
		}	
	}
}

다음은 for문을 이용하여 6개의 번호를 차례대로 n배열에 저장한다.

그리고 n 배열에 중복되는것이 있는지 확인하기 위해 다시 for문 안에서 n[i]가 지금까지 생성했던 변수와 같은지 비교한 후 같다면 새로운 값을 저장한다.

 

for (int i = 0; i < 6; i++) {
	for (int j = i + 1; j < 6; j++) {
		if (n[i] > n[j]) {
			tmp = n[j];
			n[j] = n[i];
			n[i] = tmp;
		}
	}
}
	

그리고 다시 for문을 사용하여 위에서 생성한 배열들을 오름차순으로 정렬한다.

 

for (int i = 0; i < 6; i++) {
	printf("%d ", n[i]);
}
printf("\n");
printf("계속하려면 0 종료는 1 : ");
scanf_s("%d", &con);
printf("\n");

마지막으로 n[0]부터 n[5]까지 반복하며 출력해주면 완성.

 

전체 코드를 보자.

#include <stdio.h>
#include <time.h>

int main() {
	int n[6] = { 0 };
	int tmp;
	int con = 0;
		
	while (con != 1) {	
		srand(time(NULL));
		for (int i = 0; i < 6; i++) {
			n[i] = rand() % 45 + 1;
			
			for (int j = 0; j < i; j++) {
				while (1) {
					if (n[j] == n[i]) {
						n[i] = rand() % 45 + 1;
					}
					else break;
				}
			}
		}
		for (int i = 0; i < 6; i++) {
			for (int j = i + 1; j < 6; j++) {
				if (n[i] > n[j]) {
					tmp = n[j];
					n[j] = n[i];
					n[i] = tmp;
				}
			}
		}
			
		for (int i = 0; i < 6; i++) {
			printf("%d ", n[i]);
		}
		printf("\n");
		printf("계속하려면 0 종료는 1 : ");
		scanf_s("%d", &con);
		printf("\n");		
	}	
}

 

틀린 부분이나 궁금한 점이 있다면 댓글에 남겨주세요

반응형