thumbnail image

[JAVA] 로또번호 생성하는 프로그램 만들기

Taedi

·

2021. 8. 8. 16:01

반응형

잡설

최근 자바를 배우면서 뭘 할 수 있을까 고민하다 간단하게 로또번호를 생성할 수 있는 코드를 작성해 보았습니다. Math.random() 을 활용해 1과 45사이의 번호를 생성하고, 리스트를 이용해 중복 여부를 판별하여 서로 다른 임의의 수 6개를 출력하였습니다.  

 

 

Math.random()

Math.random()은 0 이상 1 미만인 임의의 실수를 반환하는데, 여기에 45를 곱하면 '0 <= n < 45' 의 값이 나오게 되고 1을 더해주면 '1<= n < 46' 범위의 값이 나오게 됩니다. (int) 로 형 변환(Casting) 하면 소수점 이하의 부분은 버려지는 특성을 이용하면 '1<= n <= 45' 범위의 정수를 얻을 수 있습니다.

 

list.contains()

로또번호는 동일하지 않은 6개의 숫자가 필요하기 때문에 중복된 수가 있는지 확인하기 위해 먼저 찾은 값을 리스트에 저장하고 새로 찾은 값이 기존의 리스트에 존재하는지 contains 메서드를 통해 확인하였습니다. 

 

코드

import java.util.ArrayList;
// import java.util.Comparator;

public class LottoNumCreater {

	public static void main(String[] args) {
		funcLotto();
	}

	private static void funcLotto() {
		
		int num;	// 로또번호
		ArrayList<Integer> lottoNums = new ArrayList<Integer>(6);	// 로또번호 리스트

		
		for (int i = 0; i < 6; ++i) {
			
			for (;;) {
				
				// 1 ~ 45 중 임의의 숫자 반환
				num = (int) (Math.random() * 45 + 1);
				
				// 중복 확인
				if (lottoNums.contains(num)) {
					continue;
				} else {
					lottoNums.add(num);
					break;
				}
				
			}
			
		}
		
		
		// 출력
		lottoNums.sort(null); // lottoNums.sort(Comparator.reverseOrder()); 역순
		System.out.printf("로또 예상 번호는 %s 입니다!%n", lottoNums.toString());

	}

}

 

리스트 자료는 아래의 방식으로도 출력이 가능하다.

import java.util.Iterator;		
        
        
        // 출력2 : for each 이용
		for (int lotNum : lottoNums) {
			System.out.print(lotNum + "  ");
		}
		System.out.println();
		
		// 출력3 : iterator 이용
		Iterator<Integer> iterator = lottoNums.iterator();
		while (iterator.hasNext()) {
			System.out.print(iterator.next() + "  ");
		}
		System.out.println();

 

출력결과

로또 예상 번호는 [4, 6, 9, 10, 27, 45] 입니다!

4 6 9 10 27 45
4 6 9 10 27 45

 

 

 

내용 중 틀린 부분이나 더 효율적인 방법이 있다면 저도 알려주세요! :-D

반응형

티스토리 아이디로 코멘트를 남기려면

여기를 눌러주세요!

닫기 아이콘
사이드 프로필 배경이미지
아바타 이미지

Taedi's Log

#태디 #코딩린이

자습한 내용을 기록하는 공간이라 다소 먼 길로 돌아가는 방법들이 존재할 수 있습니다🐹 Python, Web에 관심을 갖기 시작했습니다🐶