본문 바로가기
Category/JAVA

[자바] 배열을 활용하여 로또번호 만들기

by developer__Y 2023. 10. 9.

※해당 글은 자바의 정석 기초편을 참고하여 작성된 자료입니다.

 

자바 배열을 활용하여 로또번호를 추출하는 간단한 코드를 만들어보자.

 

기본 로직

1~45까지 번호를 담을수 있는 배열을 만들어 배열내 저장된 인덱스값을 random() 메소드를 통해 생성된
임의의 변수(위치)에 옮긴뒤, 6개의 배열값을 추출한다.

코드

public static void main(String[] args) {
       int[] Lotto = new int[45]; //1~45까지 로또번호를 담을수있는 배열 생성
        for(int i=0;i<Lotto.length;i++){ 
            Lotto[i] = i+1;  // Lotto[0]에 1을 담는다.
            }
    int tmp,j = 0; // 바꾼값을 담을 임시변수 생성
        for(int i=0;i<6;i++) {    // Lotto[0]~Lotto[5]까지 값을 1~45 임의의 숫자에 
                                    // 해당하는 배열값과 서로 바꾼다.
            j = (int)(Math.random()*45)+1;
            tmp = Lotto[i];
            Lotto[i] = Lotto[j];
            Lotto[j] = tmp;
        }
        for(int i=0;i<6;i++) {
            System.out.print(Lotto[i]);
            System.out.print(",");
        }
    }
}

Math.random() 메소드는 0.0<=x<1.0까지의 실수를 무작위로 생성한다.

따라서, 해당 메소드에 45를 곱해주면

0~44.999999999999999까지의 숫자를 추출해낼것이다. 우리가 추출하고 싶은 숫자는 1~45이므로,

int 정수형으로 형변환을 해준뒤, 1를 더해주면

(int)(Math.random()*45)+1 = 1~45.99999999999999까지의 숫자를 정수형으로 변환하여(소수값은 버림) 출력해줄 것이다.

이렇게 섞인 0~45까지의 배열중 0~5번째 배열값을 출력해주면 아래와 같은 값을 얻을수있다.

아래와 같은 무작위의 1~45까지의 로또번호 6개를 추출해낼수 있다.

이러한 방식은 1~45까지 순서대로 쌓여있는 카드들중 맨 위의 6장을 무작위로 뽑은 6장과 위치를 변경하여,

맨 위의 6장을 뽑는 방식으로, 중복된 값을 추출하지않는다!