Egloos | Log-in


로또생성기 java로 만들어보기

 

javaservice.net에서 보고 저도 한번 짜봤어요.

( 원글: http://www.javaservice.net/~java/bbs/read.cgi?m=resource&b=qna2&c=r_p&n=1196139164&p=3&s=t#1196139164 )

 

문제

  1. 1부터 45까지의 숫자 중에 6개를 뽑는다.6개의 값이 다 달라야 한다. 
  2.  java.util.Random를 이용해서 임의의 값을 구한다.
  3. 출력시 작은 숫자부터 순서대로 출력 

 

 

 

 


저의 풀이

 간단하게 짠다면 일단 저는 아래와 같이 해보고 싶어요. (generics와 auto-boxing을 활용했으니 java5)

import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;
public class LottoMachine1 {
    public static void main(String[] args) {
        SortedSet<Integer> pickedNumbers = new TreeSet<Integer>();
        Random random = new Random();
        while(pickedNumbers.size()< 6) pickedNumbers.add(random.nextInt(45)+1);
        System.out.println(pickedNumbers);
    }
}

 

그리고 아마 프로젝트에서 짠다면,  알아보기 쉽게 하기 위해서 아래와 같이 바꾸었을 것 같아요.

import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;

public class LottoMachine {
    private int maxNumber;
    private int pickedNumbersCount;
    private Random random = new Random();
   
    public LottoMachine(int maxNumber, int pickedNumbersCount){
        this.maxNumber = maxNumber;
        this.pickedNumbersCount = pickedNumbersCount;
    }

    public void pick() {
        SortedSet<Integer> pickedNumbers = new TreeSet<Integer>();
        while(pickedNumbers.size() < pickedNumbersCount ){
            int pickedNumber = random.nextInt(maxNumber)+1;
            pickedNumbers.add(pickedNumber);
        }
        System.out.println(pickedNumbers);
    }
    public static void main(String[] args) {
        LottoMachine machine = new LottoMachine(45,6);
        machine.pick();
        machine.pick();
    }   
}

 

짧은 코드보다는 알아보기 좋은 코드를 짜고 싶다는 말을 할려고 고쳐봤는데..글쎄요; 바뀐 코드가  더 눈에 잘 들어온다는 확신이 들지는 않네요 ^^;

by 정상혁 | 2007/12/12 17:07 | 코드,그냥 재미로 | 트랙백 | 핑백(1) | 덧글(2)

트랙백 주소 : http://benelog.egloos.com/tb/1642193
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at 개발을 통한 자기수양 - be.. at 2007/12/14 19:02

... 바로 아래 포스팅에서 간단한 로또생성기 코드를 만들어봤었죠. (http://benelog.egloos.com/1642193). 같은 문제에 대한 dak99님의 풀이(http://dak99.egloos.com/3529054)를 보고 다시 다른 버전을 만들어봤어요. ... more

Commented by 떠리 at 2007/12/12 18:11
여기다가 기존의 확률을 추가해서 정규분포나 이런 분포를 바탕으로 뽑아내면 더욱 좋을듯 싶네요.
Commented by 정상혁 at 2007/12/13 09:47
떠리/ 일반적인 확률문제처럼 보면 로또의 매회 추첨은 그 전 추첨과 확률적으로 독립적인 사건이므로 기존의 확률은 의미가 없을 것 같긴해요. 그리고 로또 추첨번호는 정규분포가정보다는 그냥 1부터 45까지의 숫자가 이산형 균일분포(discrete uniform distribution) 한다고 가정할 수 밖에 없을 것 같습니다. 로또 연구가들은 뭔가 더 깊이 있는 이론이 있겠죠 ^^; 추첨되는 공들 중에 미묘하게 모양이나 질량이 달라서 잘 걸리는 공이 있다고 가정하면 로또연구가들이 기존 자료를 연구하는 것은 그런 의미인지도 아닐까하는 생각도 드네요 ^^

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶