[Python] 랜덤 모듈과 파일 입출력을 이용한 로또링!

2011. 5. 25. 22:06
파이썬을 대충 공부하기는 해봤는데 트위터나 구글 등의 오픈API를 이용하지 않고 내장 모듈로만 뭔가 만들어볼까 하다가 로또 당첨금 15억원때문에 파탄난 가정에 대한 뉴스를 보고서, 도대체 로또 1등은 얼마나 힘든 일인지 파이썬을 이용해 알아보기로 했다.
    
프로그램을 처음에 한번 실행해봤더니 8308532번만에 겨우 1등이 당첨될 수 있었다. 실제로 1등에 당첨이 될 확률은 800만분의 1정도라는데 신기하게도 한번에 비슷한 확률로 1등이 나왔다. 여러번 테스트를 해보니 5등은 200번에 한번정도는 당첨이 되는 것 같은데 그 이상은 상당히 힘든 것 같다. 1등은 프로그램 실행 후에 밥을 먹고 화장실도 다녀와도 당첨이 안되어 있을 정도...
import random

lotto = random.sample(range(1,45),7)
bonus = lotto[6]
lotto.pop()

howManyTried = 0

while 1:    
    f=open("lotto.txt", "a")

    howManyGotNum = 0
    howManyTried += 1

    myLotto = random.sample(range(1,45),6)
    lotto.sort()
    myLotto.sort()

    for i in myLotto:
        for j in lotto:
            if i==j:
                howManyGotNum+=1
                break
    
    if howManyGotNum==6:
        print("1등!\n")
        f.write("1등")
        break
    elif howManyGotNum==5:
        for b in myLotto:
            if b==bonus:
                f.write("2등!\n")
        howManyGotNum==5 
        f.write("3등!\n")
    elif howManyGotNum==4:
        f.write("4등!\n")
    elif howManyGotNum==3:
        f.write("5등!\n") 
    else:
        f.write("꽝!\n")
f.close()

1등에 당첨되면 어쩌지? 하는 걱정에 지금껏 한번도 로또를 해본 적이 없었는데, 앞으로 그런 걱정은 전혀 할 필요가 없을 것 같다.

박상근 프로그래밍/Python