Test141_1 Random 클래스 / 로또 번호 생성기 (난수 발생 프로그램)
※ Test141과 비교
※ java.util.Random 클래스는
여러 형태의 난수를 발생시켜 제공하는 클래스이다.
Math 클래스의 정적 메소드인 random() 메소드도 난수를 제공하는 메소드이지만
0.0 ~ 1.0 사이의 실수 형태만 발생하게 되므로
필요한 여러 형태의 난수를 만들어내기 위해서는 추가적인 연산들을 수행해야 한다.
그래서 자바는 여러 형태의 난수를 발생시켜주는 전용 클래스인
Random 클래스를 별도로 제공하고 있다.
※ 로또 번호 생성기 (난수 발생 프로그램)
프로그램이 실행되면 기본적으로 로또를 5게임 수행하는 프로그램 구현
(작은 번호부터 큰 순서로 정렬)
※ 로또번호 : 1~45 사이 중복되지 않는 6개의 수
Lotto.java
class Lotto
{
// 배열 변수 선언 및 메모리 할당 → 로또 번호를 담아둘 배열방 6개
private int[] num = new int[6];
// getter
public int[] getNum() //-- num을 getter 그래서 getNum → 규칙이라 생각하자, setter도 있다.
{
return num;
}
// 6개의 난수를 발생시키는 메소드 정의
public void start()
{
int cnt = 0;
Random rd = new Random();
int n;
jump: // 브레이크 레이블 (자주쓰진말자ㅏ)
while (cnt<6)
{
n = rd.nextInt(45)+1; //12
for (int i=0; i<cnt; i++)
{
if (num[i]==n)
continue jump;
}
num[cnt++]=n; //num[0]=12;
}
// 정렬
sorting();
}
// 정렬 메소드
public void sorting()
{
Arrays.sort(num); //-- 전달받은 매개변수를 정렬해서 넘겨준다. (정렬알고리즘으로 하는게 더 바람직하다)
}
}
Test141_1.java
public class Test141_1
{
public static void main(String[] args)
{
// Lotto 클래스 인스턴스 생성
Lotto lotto = new Lotto();
// 기본 5게임
for (int i=1; i<=5; i++)
{
lotto.start();
// 결과 출력
for (int n : lotto.getNum())
System.out.printf("%4d", n);
System.out.println();
}
}
}
cmd
2 5 12 15 26 30
6 8 15 21 24 30
2 8 17 23 25 32
4 7 10 11 18 31
8 13 21 35 36 44
계속하려면 아무 키나 누르십시오 . . .
'Study Note > Java' 카테고리의 다른 글
JAVA_ Test143_ 예외(Exception) 처리 / [종료:Ctrl+z] (0) | 2018.06.17 |
---|---|
JAVA_ Test142_ 예외(Exception) 처리 개요 / 정수입력 (0) | 2018.06.17 |
JAVA_ Test141_ Random 클래스 / 로또 번호 생성기 (난수 발생 프로그램) (0) | 2018.06.17 |
JAVA_ Test140_ Math 클래스 (0) | 2018.06.16 |
JAVA_ Test139_ Calendar 클래스 / GregorianCalender() / 날짜더하기 프로그램 (0) | 2018.06.16 |
댓글