로또는 1~45의 숫자 중 숫자 6개를 추첨하여 당첨되는 식이다.
이 때, 1~45 중 6개의 숫자를 랜덤으로 뽑아 누적시켜주는 형식을 만들어야 한다.
1)
우선 볼의 수는 총 45개,
그리고 총 6번을 뽑아야 하므로 앞에 뽑은 5개의 수가 누적될 수 있도록 해야 한다.
int[] ballArr = new int[45]; => 뽑을 공의 숫자
int[] tempArr = new int[5]; => 뽑은 공을 보관할 방의 수(누적시킬 횟수)
2)
공을 뽑는 경우의 수(1~45) 반복문 생성
반복문은 0부터 시작, 공의 수는 배열의 길이보다 작고, 뽑은 공의 수에 +1 해야한다(시작하는 수가 0이므로)
for(int i=0; i<ballArr.length; i++) {
ballArr[i] = i+1;
}
3)
공을
0부터 시작, 반복 횟수는 방의 수 배열의 길이보다 작고,
공을 꺼내어 오면 공의 방번호(index번호)를 기억하는 곳으로 사용되는데 꺼내온 공의 방번호(index번호)가 0(실제값은 1번볼)이 들어올 수 있으므로
데이터값은 방번호(index번호)로 사용하지 않는 -1로 모두 (5개) 초기화한다.
for(int i=0; i<tempArr.length; i++) {
tempArr[i] = -1;
}
4)
랜덤 생성자 생성!
Random rnd = new Random();
(★import java.util.Random; 필수)
5)
결과 초기화
String result ="";
6)
공을 6번 뽑고 이 공이 중복된 공이 아니라면 값을 누적시키는 반복문을 만든다.
(단 공의 값이 중복된다면 다시 뽑게 해야 함)
\
outer:
for(int i=0; i<6; i++) { // 공을 6번 뽑는 반복문
int idx=rnd.nextInt(44)+1; // nextInt(44)는 0~44 사이의 정수를 반환
for(int j=0; j<tempArr.length; j++) { // 공의 값을 누적시키는 반복문
if(idx==tempArr[j]) { // 새로 뽑은 방번호가 기존에 뽑은 것과 같다면 다시 새로 뽑아야 한다.
i--; // 새로 뽑아야 하므로 뽑은 공 초기화
continue outer; // 다시 바깥 반복문 반복
}
}
if(i<5) {
tempArr[i]=idx; // 뽑은 방번호(index 번호)를 저장시켜 둔다.
}
String comma = (i<5)?",":""; // 앞의 5개 누적된 수 뒤에는 "," , 마지막 수 뒤에는 공백
result+=ballArr[idx]+comma;
}
int[] ballArr = new int[45];
int[] tempArr = new int[5];
for(int i=0; i<ballArr.length; i++) {
ballArr[i] = i+1;
}
for(int i=0; i<tempArr.length; i++) {
tempArr[i] = -1;
}
Random rnd = new Random();
String result ="";
outer:
for(int i=0; i<6; i++) {
int idx=rnd.nextInt(44)+1;
for(int j=0; j<tempArr.length; j++) {
if(idx==tempArr[j]) {
i--;
continue outer;
}
}
if(i<5) {
tempArr[i]=idx;
}
String comma = (i<5)?",":"";
result+=ballArr[idx]+comma;
}
System.out.println("로또 당첨번호 : "+result);
난 로또 무경험자라 이거 만들면서 처음으로 로또 찾아봤다.
만들어본 김에 이걸로 로또나 꾸준히 사볼까..
'{"CODING": undefind}; > JAVA' 카테고리의 다른 글
14. Date, Calendar 클래스 (0) | 2021.02.04 |
---|---|
13. 버블 정렬(Bubble Sort)(오름차순,내림차순 정렬) (0) | 2021.02.03 |
11. String 클래스(3) (0) | 2021.02.01 |
10. String 클래스(2) (0) | 2021.01.31 |
9. String 클래스 (1) (0) | 2021.01.29 |