반응형
파이썬 로또 시뮬레이션 생성기
이거는 로또 시뮬레이션으로 재미 삼아서 만들어본 건데 참고로만 아까 보시면 될 것 같아요. 로또를 해서 6개의 랜덤 당첨 번호 보너스 번호 이러한 것들을 아까 만들어 놔서 그거에 따라서 등수를 반환을 해놓고 로또 횟수에 따라서 구매에 시뮬레이션을 작동해서 돌려보는 그거예요. 로또 시뮬레이션을 한번 재미 하면서 돌려볼 수 있는 그런 코딩이라고 보시면 될 것 같습니다.
그래서 그렇게 어려운 내용이라기보다는 재미 삼아서 만들어서 할 수 있는 정도 그걸로 보시면 될 것 같고요. 제가 충격으로 먹었던 거는 이걸 돌려봤었었는데 표본이 커지면 커질수록 기대값이라는 게 정해지지 않습니까 5등 당첨될 확률 5천원 로또를 당첨될 확률이 한 2.3% 정도가 나왔습니다. 그리고 4등 5만 원이죠. 로또 4등에 당첨될 확률이 한 0.3% 정도였어요. 어마무시하게 적은 확률인 거죠. 저도 몰랐었는데 이거 로또 시뮬레이션을 이거 만들어 보면서 그때 충격을 먹었더라고요 유용하게 이거를 재미 삼아서 보셔서 하시면 될 것 같고요 크게 어려운 내용은 없고 재미 삼아서 한 번씩 해보시면 괜찮을 것 같습니다.
import numpy as np
numbers = np.random.choice(np.arange(1, 46), 7, replace = False) # 1~45 중 7개 추출
win_numbers = numbers[:-1] # 당첨 번호 6개
bonus = numbers[-1] # 보너스 번호
print(win_numbers) # [38 42 13 41 44 11]
print(bonus) # 31
def lotto(my_num, win_numbers, bonus):
same_cnt = 0 # 일치하는 개수
for num in win_numbers: # 각 당첨 번호 포함 여부 체크
if num in my_num: same_cnt += 1
# 등수 반환
if same_cnt == 6: return 1
elif same_cnt == 5 and bonus in my_num: return 2
elif same_cnt == 5: return 3
elif same_cnt == 4: return 4
elif same_cnt == 3: return 5
else: return 6 # 꽝
# 예시 상황
my_num = [38, 35, 11, 10, 40, 42]
print(lotto(my_num, win_numbers, bonus)) # 5
lotto_cnt = 1000000 # 구매할 로또의 개수
# 당첨 번호 및 보너스 번호 추출
numbers = np.random.choice(np.arange(1, 46), 7, replace = False)
win_numbers = numbers[:-1]
bonus = numbers[-1]
history = [0] * 7 # i번 인덱스에 i등 횟수 기록(0번 인덱스는 사용 X)
# 로또 구매 시뮬레이션
for i in range(lotto_cnt):
my_num = np.random.choice(np.arange(1, 46), 6, replace = False) # 1~45 중 6개 추출
result = lotto(my_num, win_numbers, bonus) # 등수 반환
history[result] += 1 # 결과 기록
# 결과 출력
for i in range(1, 6):
print('%d등,%d'%(i, history[i]))
print('꽝 횟수, %d회'%history[-1])
반응형
'Python' 카테고리의 다른 글
[python] 셀레늄 Selenium 파파고 한일 번역기로 문장 교정 해보기 (0) | 2022.08.19 |
---|---|
[python] 정규식 한문 제거 (0) | 2022.08.19 |
[python] 이미지 내 텍스트 자동 삽입 (0) | 2022.08.19 |
[python] 네이버쇼핑 연관검색어 수정 버전 키워드 크롤링 (0) | 2022.08.19 |
[python] 고전 사이트 게시판 텍스트 추출 크롤링 (0) | 2022.08.14 |
댓글