※해당 글은 자바의 정석 기초편을 참고하여 작성된 자료입니다.
자바 배열을 활용하여 로또번호를 추출하는 간단한 코드를 만들어보자.
기본 로직
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장을 뽑는 방식으로, 중복된 값을 추출하지않는다!
'Category > JAVA' 카테고리의 다른 글
[SpringBoot] GetMapping과 PostMapping (0) | 2023.10.13 |
---|---|
[자바] 추상클래스와 인터페이스 (1) | 2023.10.11 |
[JAVA] Static 이란? (1) | 2023.10.10 |
그래들(Gradle)이란? (0) | 2023.10.04 |
[자바 스프링부트] 윈도우 CMD에서 빌드(build)하는방법 (0) | 2023.10.04 |