본문 바로가기

c언어 알고리즘 및 코드

중복 없는 로또 추첨 알고리즘

어제(2020.11.8 기준)는 936회 로또 추첨일이었다. 당첨번호는 7 11 13 17 18 29+43 이었다.

아직 학생인 필자는 비록 로또는 뽑지 못하지만 당첨되신 분들 축하드린다. 

프로그램을 깔끔하게 하기 위해 로또 추첨과 보너스라는 함수를 만들어 놓았다.

함수를 로또 추첨과 보너스로 나눠서 설명을 해 보도록 하겠다.

 

로또 추첨- 로또 추첨이라는 배열을 만들어 로또라는 배열 안의 범위45개 중 랜덤으로 1개씩 나오게 하고 칸을 6개로 만들었다. 그중 중복을 없애기 위해 중복을 덜어내고 넣을 그릇을 하나 만들어 주는데, 그게 change라는 배열이다.

여기서 i와 n의 역할은 배열 안에서 칸의 번째를 의미한다. 참고로 컴퓨터 상에서 배열의 순서는 0부터 시작한다. 만약 i를 1이라고 한다면 i-1=0번째가 된다.

첫번째(0번째) 항목과 두번째(1번째) 항목을 비교하는 if문이 되는것이다. 

두번째 for문은 그 항목을 출력하는 것이다.

 

보너스-

보너스는 말그대로 보너스의 개념으로 볼 수 있다.

보너스도 45개 중 1개 랜덤으로 나오게 했고, 그 값을 출력한다.


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

int lottochuchom(){
	srand(time(NULL));
	int lotto[6];
	int change[6];
	
	int i,n;
	lotto[0]=change[0];
	
	for(int i=0; i<6; i++){
		if(change[n-1]!=lotto[i]) change[n++]=lotto[i];
	}
	for(int i=0; i<6; i++){
		lotto[i]=rand()%46+1;
		printf("%d ",lotto[i]);
	}
}

int bonus(){
	int bonus=rand()%46+1;
	printf("bonus: %d",bonus);
}

int main(){
	lottochuchom();
	bonus();
}

아직까진 보너스가 겹친적은 없었으나 겹친다면,, 알아서 해결하시길. 이상 쌉간지나는 태양계정복자였음. ㅃㅇㅃㅇㅃㅇ

'c언어 알고리즘 및 코드' 카테고리의 다른 글

C언어 1~100까지 출력하기  (0) 2021.06.15
UBD 변환기  (1) 2021.01.06
send+more=money  (0) 2020.10.20
c언어- 올림피아드 2018 복면산 문제 알고리즘  (2) 2020.10.18
C언어- y=ax+b 코드  (4) 2020.10.18