본문 바로가기
Study Note/Java

JAVA_ Test141_1_ Random 클래스 / 로또 번호 생성기 (난수 발생 프로그램)

by 시뮝 2018. 6. 17.
728x90


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

계속하려면 아무 키나 누르십시오 . . .







728x90

댓글