Java를 통해 로또 프로그램을 구현해보도록 하자.
사용되는 메소드는 array, random, for 메소드 이다.
1부터 45까지의 숫자 중 6개를 임의로 뽑는 소스이다.
소스코드는 아래와 같다.
package koreait.day8;
import java.util.Arrays;
import java.util.Random;
public class RealLotto {
//확률을 반영하여 LottoTest.java를 새로운 알고리즘으로 구현합니다.
public static void main(String[] args) {
int[] numbers = new int[45];
Random r = new Random();
for(int i=0;i<45;i++) { //인덱스 범위 : 0 ~44
numbers[i]=i+1; //값 범위 : 1~ 45
}
System.out.println("numbers 배열 초기값 -----------------------");
System.out.println(Arrays.toString(numbers));
System.out.println("--------------- -----------------------");
int[] lotto = new int[6];
int k; //삭제할 위치의 인덱스 -> 랜던한 값으로 합니다.
for(int cnt=0;cnt<6;cnt++) {
//1. 인덱스 범위를 -1씩 줄이면서 난수 발생시킵니다.
k=r.nextInt(45-cnt); // 경계값을 45(00~44),44(0~43),43(0~42),42(0~41), 41(0~40),40(0~39)
System.out.println("k = " +k +",number =" + numbers[k]);
//2. k번째 위치의 데이터를 lotto배열에 저장합니다.
lotto[cnt]=numbers[k];
//3. 배열에서 데이터 삭제
for(int i=k;i<numbers.length-1;i++) {
numbers[i] = numbers[i+1]; // 인덱스 i+1의 배열값을 인덱스 i의 값으로 변경.
}
System.out.println(Arrays.toString(numbers));
}
System.out.print("최종 선택 숫자 : ");
System.out.println(Arrays.toString(lotto));
//오름차순 정렬 : 작은 값에서 큰 값 순서대로 위치를 바꿉니다.
Arrays.sort(lotto); //lotto 배열값들을 순서대로 위치 변경합니다.
System.out.println(Arrays.toString(lotto));
// k=23; //삭제할 위치의 인덱스
// for(int i=k;i<numbers.length-1;i++) {
// numbers[i] = numbers[i+1]; // 인덱스 i+1의 배열값을 인덱스 i의 값으로 변경.
// }
// System.out.println(Arrays.toString(numbers));
}
}
위의 소스코드를 실현하면 아래와 같이 로또번호가 임의로 배정되어 나온다.