반응형

이전에 배운 Java 기능 활용하면 간단하게 로또 번호를 생성하는 프로그램을 만들 수 있습니다.

기본 기능으로는 데이터를 저장할 배열, 데이터를 생성할 랜덤 함수, 그리고 정렬과 출력을 구현할 것입니다.

 

아래의 글들은 이번 기능에 사용한 리스트입니다.

[Dev/Java] - [Java] 반복 제어 for문 활용법

[Dev/Java] - [Java] 데이터의 집합 배열

[Dev/Java] - [Java] 정렬, 배열을 이용한 선택정렬 방법

 

또한, 랜덤 값을 출력하려면 난수를 발생하는 메소드가 필요한데요.

이는 Math.random()의 기능을 사용하도록 하겠습니다.

 

Math.random 기능은 double 형태의 값을 가지면 0.1~1.0의 값을 리턴합니다.

 

구현 로직

  1. 로또 번호를 저장할 배열을 선언
  2. 1~45까지의 난수를 6개 발생시켜 값을 저장
  3. 이러한 형태의 배열 값을 총 30개 저장 (6 * 30 총 180개 숫자)
  4. 하나의 회차(1회전 -> 값 6개) 진행 후 해당 값 출력
  5. 출력 전에 저장된 값을 순서대로 정렬
  6. 인접된 값이 서로 같으면 해당 로또 값은 폐기
  7. 이런 식으로 총 30회까지 진행
  8. 중복되지 않은 값이 총 5개까지 출력되면 프로그램 종료.

위의 로직이 프로그램 구현 상세 내용입니다.

로또 번호 생성 소스 코드

import java.io.IOException;
import java.util.Arrays;

public class Exm {

	public static void main(String[] args) throws IOException {

		System.out.println("*로또번호 랜덤 생성*"); 
		int idx_num = 0;
		int lotto_num[] = new int[6]; 
		
		String result_txt = "";
		
		for(int i=1; i<=30; i++){ 
			
			result_txt = "";
			result_txt += idx_num+1+"회 : [ "; 
			
			//6개의 랜덤번호를 저장
			for(int j=0; j<=5; j++){
				int num_temp = (int) (Math.random()*44+1);
				lotto_num[j] = num_temp; 
			} 
			
			//저장된 숫자 정렬
			Arrays.sort(lotto_num); 
			
			//중복된 값 체크
			boolean duple = false;
			for(int k=0; k<lotto_num.length; k++){ 
				
				if(k==lotto_num.length-1) { //6번째 숫자일 경우 
					result_txt += lotto_num[k]+" ]"; 
					
				}else if(lotto_num[k]!=lotto_num[k+1]){ //list 내 인접한 숫자가 중복되지 않을 경우
					result_txt += lotto_num[k]+", \t"; 
					
				}else { //중복된 숫자가 있을 경우 flag 체크
					duple = true;
				}
			}
			
			if(idx_num==5)break; //로또번호는 5번만 출력
			
			if(duple==false) { //중복된 숫자가 없으면 로또번호 출력
				idx_num++;
				System.out.println(result_txt);	
			}
		}
	}
}

위의 프로그램을 구동한 모습입니다.

이번 코드에서는 중복되면 출력되지 않는 형태의 코드인데요.

 

중복이 발생하면 이를 제거하고 다시 출력하는 형태를 갖는 것도

하나의 방법이 될 수 있습니다.

반응형

+ Recent posts