알버트의 개발하는 블로그
자바 제12강 : 자바 랜덤 난수 (Random) 이용해서 로또 번호 뽑기 본문
이번 시간에는 자바에서 제공하는 랜덤 난수 기능을 이용하여 로또 번호를 뽑는 프로그램을 짜보겠습니다.
c++에서도 랜덤 난수 기능이 있었는데요. 자바에서 이 기능이 좋아서 그대로 가져갔습니다. 하지만 쓰는 방법은 좀 달라졌습니다. 자바에서 랜덤 난수를 쓰는 방법을 로또 번호 생성프로그램을 통해 배워보겠습니다.
로또 번호 뽑기 프로그램
import java.util.Random; //랜덤난수 패키지 포함
public class randomTest {
public static void main(String[] args) {
//랜덤 난수를 생성해주는 코드
Random random = new Random();
int[] lotto = new int[45]; //45개짜리 lotto배열 생성
for (int i =0; i< lotto.length ; i++) //45번 반복
{
lotto[i] = i+1; //각 원소에 1부터 45까지의 숫자 저장
}
show(lotto);
System.out.println("=============== 섞기 전 ===============");
for (int i = 0; i< 10000; i++ ) //반복 10000번 실행
{
int n = random.nextInt(44) + 1;//n에 1부터 44중 랜덤난수 저장
int m = lotto[0];
lotto[0] = lotto[n];
lotto[n] = m; //lotto[0]과 lotto[난수]의 수 바꾸기 코드
}
show(lotto);
System.out.println("=============== 섞은 후 ===============");
// 1등 번호를 출력한다.
System.out.print("1등 번호 : ");
for (int i =0; i< 6; i++) //1등번호 6개 뽑는 반복문
{
System.out.print(lotto[i] + " ");
try {
Thread.sleep(1000); //1초씩 쉬면서 로또번호 추첨
} catch (InterruptedException e) {
e.printStackTrace(); //예외 처리 구문
}
}
System.out.println("보너스 번호 : " + lotto[6]);
}
private static void show(int[] lotto) { //show() 함수 구현
for (int i =0; i< lotto.length ; i++) //45번 반복
{
System.out.printf(" %2d ", lotto[i]); //로또배열원소출력
if (i % 10 == 9 || i+1 == lotto.length)
{
System.out.println();//10번 반복되거나 마지막 수면 엔터
}
}
}
}
코드를 이와 같이 짜보았습니다.여기서 중요한 부분이 바로 랜덤난수를 생성하는 부분과 숫자를 섞는 코드입니다.
랜덤난수는 Random random = new Random() 으로 생성해주었습니다. 현재 시간에 맞는 랜덤 난수를 생성하는 부분입니다.
숫자를 섞는 코드는 배열의 0번째 원소(배열에선 0번이 1번)와 1번째~44번째 원소중에 하나의 원소를 뽑아서 바꿔주었습니다. 한번 실행해보겠습니다.
이와 같이 로또 번호를 추첨하는 프로그램이 정상적으로 실행되는 것을 볼 수 있습니다.
이처럼, 확률성이 들어가 있는 프로그램을 짤 때는 랜덤 난수가 유용하게 사용되는 것을 알 수 있습니다.
랜덤 난수를 잘 사용하면 프로그래밍을 더 효율적으로 짤 수 있습니다. 읽어주셔서 감사합니다
'프로그래밍 언어 > Java' 카테고리의 다른 글
자바 제14강 : 자바 StringTokenizer 클래스로 데이터 나누기 (0) | 2021.09.10 |
---|---|
자바 제13강 : 자바 PrintWriter 클래스로 파일 입출력 하기와 경로 지정 방식(절대, 상대) (0) | 2021.09.10 |
자바 제11강 : ArrayList와 클래스 이용하여 학생들의 정보 출력하기 (0) | 2021.09.10 |
자바 제10강 : 자바 예외 처리 구문 (try~catch, finally) 사용하기 (0) | 2021.09.10 |
자바 제9강 : 자바 클래스 생성자 함수, getter setter 함수, toString() 함수 만들기 (0) | 2021.09.09 |