Dev JS Blog

[JAVA] 랜덤 숫자 뽑기 로또 숫자 뽑기 본문

옛날 창고/개발

[JAVA] 랜덤 숫자 뽑기 로또 숫자 뽑기

Dev JS 2019. 9. 23. 23:50
728x90

오늘은 이제 갓 자바를 시작하시는 분들을 위해서 기본적으로

로또 번호 추출해보는 소스를 짜보겠습니다.

 

랜덤 숫자 뽑기

랜덤으로 숫자를 뽑는데 사용하는

일단 가장 기본적으로 Random class가 있습니다.

가장 기본적은 정수 랜덤 뽑기부터 해보겠습니다.

 

1
2
3
4
5
//랜덤함수 이용하기
Random rand = new Random();
for(int i = 0 ; i < 10 ; i++) {
System.out.println("RAND 결과값 : " + rand.nextInt(30)); // 0~29
}
cs

사용법은 rand.nextInt(랜덤정수개수

 0부터29 까지 30개 숫자중 랜덤으로 추출합니다.

Console 결과

정수 중 랜덤으로 뽑았습니다.

여기서 그럼 랜덤으로 6번 뽑아도 로또번호를 추출해줄수 있겠죠..?

하지만 그냥 추출하면 중복이 허용된다는 문제가 있습니다. 

언제나 개발에는 답이 없듯이 랜덤클래스로 구성하고 싶다면 for 문에 조건절을 추가하여

0과 중복 숫자는 추출되지 않도록 조건을 줘서 추출하는 것 또한 방법입니다.

 

그렇다면 랜덤을 쓰지 않고 로또 번호를 추출하는 방법은 무엇이 또 있을까요?

Collection suffle 이용하기

 

1
2
3
4
5
6
7
        List<Integer> lottoNumber = new ArrayList<Integer>();
        
        for(int i = 1 ; i <= 45 ; i++) {
            lottoNumber.add(i);
        }
        
        System.out.println("lottoNumber 확인 : " + lottoNumber.toString());
cs

일단 처음에 List에 로또 숫자인 1부터 45까지 넣어줍시다~

Console 결과

lottoNumber 리스트에 1부터 45까지 숫자가 잘 들어갔습니다.

이제 이 리스트에서 6개의 숫자를 무작위로 추출만 하면됩니다. 쉽죠..?

여기서 이용해볼께 Collections 클래스의 suffle 함수를 이용합니다.

 

1
2
3
        System.out.println("섞기 전  : " + lottoNumber.toString());
        Collections.shuffle(lottoNumber);
        System.out.println("섞은 후 : " + lottoNumber.toString());
cs

Collections.shuffle(리스트) 를 해주면 결과는...?

Console 결과

섞기 전 과 섞은 후의 차이가 보이시죠 섞인거 

그렇다면 여기서 섞은 후 그냥 첫번째부터 여섯번째까지 추출을 한다면

중복도 없고 정확히 로또번호를 추출을 할 수가 있는거죠.

마지막으로 뽑아 보겠습니다.

 

1
2
3
4
        //번호뽑기
        for(int i = 0 ; i < 6 ; i++) {
            System.out.println((i+1)+"번째 번호는 '" + lottoNumber.get(i) + "' 입니다. ");
        }
cs

 

Console 결과

로또 번호가 나왔습니다.

여기서 소스에서 한가지 주의있게 봐야할 것은 번호 추출보다 제가 for 문 i 의 시작을 0으로 했다는 것 입니다.

로그를 찍을때도 i를 1부터 시작한다면 i+1라고 굳이 바꾸지 않아도 됐을텐데 왜그랬을까요?

보통 리스트같은 배열들은 거진 0 부터 시작하기 때문에 개인적인 생각으로

for 문 시작은 0으로 시작하는걸 습관들이는게 좋다고

저를 가르쳐주신 강사님에 뜻에 따라

저 또한 그렇게 생각하기에 for 문의 시작은 웬만해선 0으로 시작하고 있답니다.

그것을 주위깊게 보시고 suffle 함수 잘 이용해 보세요~~

728x90

'옛날 창고 > 개발' 카테고리의 다른 글

[JAVA] Iterator..?  (0) 2021.01.01
[JAVA] 배열 For 문  (0) 2020.12.30
무료 SQL 툴 추천 및 설치방법  (1) 2019.09.23
[Javascript] jQuery를 이용한 배열 중복제거  (0) 2019.04.10
[JAVA] 두 리스트 비교 하기  (0) 2019.04.10
Comments