자바를 통해 배열과 정렬을 배우셨으면 로또 소스 하나쯤은 만들 수 있어야 하는데요. 그래서 자바 로또 번호 생성 소스와 분석을 해보겠습니다.
기본적으로 사용할 기능으로는 난수를 만들어낼 random 함수와 이를 담은 배열 그리고 이를 반복할 for문을 가지고 한번 로또를 만들어 보겠습니다.
로또 소스
System.out.println("로또번호 생성기"); int lotto[] = new int[6]; for(int i=0; i<=4; i++){ System.out.print(i+1+"회차 : [ "); for(int j=0; j<=5; j++){ lotto[j] = (int) (Math.random()*45+1); } Arrays.sort(lotto); for(int k=1; k<=5; k++){ if(lotto[k-1]==lotto[k]){ lotto[k] += 1; } System.out.print(lotto[k-1]); if(k!=5){ System.out.print(",\t"); }else{ System.out.println(",\t"+lotto[k]+" ]"); } } }
기본적인 소스는 위와 같습니다.
로또 소스 결과 및 설명
첫번째 for문은 회차를 나타내며 회차별로 서브 for문이 6번씩 수행됩니다.
6번의 랜덤 숫자를 발생시키고 이를 lotto 변수에 담습니다.
그리고 램덤으로 발생된 숫자가 같을 수가 있는데요.
같은 경우에는 이후에 발생된 숫자에 +1을 하여 중복 문제를 해결합니다.
랜덤 함수
위의 소스를 보시면 Math.random이라는 함수가 있는데요.
이는 사용하게 되면 1이하의 소수점 형태의 난수를 발생시키게 됩니다.
Math.random을 출력해 본 모습인데요.
위와 같이 1이하의 숫자가 랜덤으로 발생된 모습입니다.
이렇게 발생된 숫자에 임의의 값을 곱하게 되면 0~임의의 값 범위의 난수를 발생시키게 됩니다.
정렬 함수
로또 소스에서 램덤 숫자를 생성한 뒤에 변수에 저장하게 되는데요.
이를 그대로 출력하면 정렬이 안된 상태로 나오기 때문에 if문을 통해 비교를 해서 정렬 시켜야 합니다.
하지만 Array.sort를 쓰면 자동으로 정렬이 됩니다.
배열에 담긴 숫자를 출력해 본 모습입니다.
정렬이 되지 않은 상태인데요. 이를 정렬 시켜 보겠습니다.
출력하기 전에 Arrays.sort로 lotto 변수를 정렬 시킵니다.
그리고 출력해 보니 오름차순 형태로 정렬된 모습입니다.
위의 제가 만든 자바 로또 소스는 기능상으로는 문제가 없지만 중대한 결함을 하나 가지고 있는데요.
이를 분석하시고 고치셔서 사용해 보시기 바랍니다.
캠프캡
45 두개 나오면 하나 46되잖아요 이결함을 어떻게 해결하나여
관리자
제가 옜날에 만들고 관둔거라서… 결함이 조금 있습니다. 그럴경우 반복문을 다시 돌려서 숫자를 재산출 하면 될거 같습니다. ;;;;;;