본문 바로가기
프로그래밍/Python

파이썬으로 로또 만들기 2탄 - 랜덤 값과 선택 값 비교

by 철인애슬론 2022. 10. 8.

파이썬 로또 만들기 프로젝트 2탄!

*목표*

  1. 6개의 랜덤 값 추출하기
  2. 보너스 값 추가로 중복 없이 1개 더 추출
  3. 맞은 개수 체크

 


1탄 참고 자료! 필독!

https://datazzang.tistory.com/14

 

파이썬으로 로또 만들기 1탄 - if문으로 중복 없이 숫자 6개 뽑기!

파이썬으로 로또 만들기 프로젝트 1탄! * 목표 * 원하는 숫자 6개를 중복 없이 리스트에 집어넣기 자동으로 숫자 하나를 뽑을 수 있다. 자동으로 나머지 모든 값을 선택할 수 있다. Ch1. 원하는 숫

datazzang.tistory.com


Ch1. 6개의 당첨 번호(랜덤 값) 추출하기

1탄에서 내가 원하는 숫자를 뽑았으면, 이번에는 당첨번호를 뽑을 차례이다.

randPick = []
# 랜덤 숫자 추출
while 1:
    if len(randPick) == 6:
        break

    randValue = random.randint(1, 45)

    if randValue not in randPick:
        randPick.append(randValue)
    randPick = list(set(randPick))
    randPick.sort()

1탄의 뽑기를 활용하면 간단히 해결 가능하다. 6개의 숫자를 뽑으면 멈추며(break), 중복되지 않게 not in 활용함.


Ch2. 보너스 값 추가 추출하기

로또는 6개의 숫자를 맞추는 게임이지만, 2등의 경우 특이하게 5개 + 1개의 보너스가 일치하면 당첨되는 룰이 있다.

보너스 값을 추출할 경우, 6개의 당첨 번호를 제외하고 추가로 1개를 뽑아야 하므로 이것 역시 반복문을 사용하였다.

# 마지막에 보너스 값 추가
BonusPick = []
while 1:
    BonusValue = random.randint(1, 45)
    if BonusValue not in randPick:
        BonusPick.append(BonusValue)
        break

# 당첨번호
print("랜덤으로 뽑은 당첨 번호: ", randPick)
print("보너스 값은 :", BonusPick)

랜덤 숫자 뒤에 붙여도 되지만, 지저분해 보여 따로 리스트(BonusPick)를 생성해 주었다. 해당 값은 마지막 3탄에서 5개의 숫자가 맞을 경우 추가로 비교할 예정이다.


Ch3. 맞은 개수 추출

파이썬(python)에 있는 유용한 기능 if와 in을 사용하여 해결하였다.(정말 인간 친화적 언어!)

# 맞은 갯수 체크
countNum = 0
resNum = []
for i in numlist:
    if i in randPick:
        countNum += 1
        resNum.append(i)

print("일치하는 개수 : ", countNum)
print("일치하는 값 : ", resNum)

countNum을 활용하여 반복문이 반복할 때마다 1을 증가시켜줬다.

즉, 우리가 뽑은 숫자 리스트(numlist)의 0번째부터 비교(i)를 할 경우, 만약(if) 랜덤으로 뽑은 리스트(randPick) 안에(in)  0번째 값(i)이 있다면 countNum을 1 증가시키고, 결과 리스트(resNum)에 추가하였다.

그러면 총 6개의 리스트 값을 비교하여 일치하는 개수와 일치하는 리스트 값을 얻을(출력할) 수 있다.


결과 코드

3개 일치

P.S.

로또 5등(3개 맞춤) 당첨 확률은 1/45. 즉, 2.2222%. 5등 뽑기도 쉽지 않았다..

 

마지막 3탄은 각각 일치 개수별 상금을 출력하며, 각각의 확률에 대해 다뤄보겠습니다.

반응형

댓글