241021 랜덤 숫자 생성

물고기가자라면어그로·2024년 10월 22일
0

오늘(사실 어제)은 랜덤 숫자를 생성하는 법을 배워 이를 통해 로또 번호 생성기를 만들어보았다.

Random

랜덤 숫자는 random 클래스를 이용해서 생성할 수 있는데, 생성하는 법은 다음과 같다.

Random random = new Random();     //랜덤 객체 생성
random.nextInt();     //소괄호안에 최댓값+1을 적어준다.

random.nextInt(num);로 작성하면 범위는 0이상 num 미만인 수가 랜덤으로 나오게 된다.

로또 숫자 생성기

로또 숫자 생성기의 특징은 다음과 같다.

  1. 1~45까지의 숫자 6개가 랜덤으로 나올 것
  2. 중복인 숫자가 없을 것
  3. 출력은 "이번 주 로또 번호는 1 2 3 4 5 6 입니다." 형태로 뽑을 것

숫자 6개를 뽑아 컬렉션에 넣어 이를 출력하면 되는데, 중복이 없어야 하기때문에 Hashset를 사용하기로 했다.

        Set<Integer> lotto = new HashSet<Integer>();

그리고 while문을 사용해 숫자를 6개 뽑았다.
(처음에 for 문으로 반복을 6번 돌렸는데, set의 경우 중복이 나오면 숫자가 6개 미만으로 떨어질 수 있기 때문에 while문으로 바꾸었다.)

이 때, random문은 0부터 숫자를 뽑기 때문에 뒤에 +1을 더해 컬렉션에 넣어주었다.

        Random random = new Random();
		while(lotto.size()<6){
   			lotto.add(random.nextInt(45)+1);
		}

가장 어려웠던 부분은 의외로 출력 부분이었다.
그냥 출력하자니 대괄호에 묶여 나올 것이고 향상된 for 문을 돌려 숫자를 뽑아 앞 뒤에 문자를 넣자니 개행이 계속 될 것 같았다.
그러다 갑자기 전에 print();println();의 차이를 공부했던 게 생각났다.
항상 습관적으로 sout에서 자동완성되는 System.out.println();의 형식에 익숙해져있다보니 개행이 되지 않는 print();을 사용할 수 있다는 것을 까먹은 것이다.
그래서 최종적으로 System.out.print();을 사용해 무사히 로또 번호 생성기를 완성할 수 있었다.

import java.util.*;

public class Main {
    public static void main(String[] args) {

        Random random = new Random();
        Set<Integer> lotto = new HashSet<Integer>();

        while(lotto.size()<6){
        lotto.add(random.nextInt(45)+1);
        }
        System.out.print("이번주 로또 번호는 ");
        for (Integer lottoList: lotto){
        System.out.print(lottoList+" ");
        }
        System.out.println("입니다");

    }
}

0개의 댓글