Python을 활용한 “과거 로또 번호 분석을 통한 당첨되고 싶은 숫자 조합 안내”
지난 주 직원 100여명이 모인 자리에서 소속사로부터 “XX번방이 쉽지 않다”는 말을 듣고 충격을 받았다. 충격을 덜기 위해 고량주를 마시고 쓰러졌다. 꿈에서 “쉽지 않다”는 목소리를 듣고 악몽에서 깨어난 후, 출구 전략에 대해 생각했습니다. 시도하기로 결정했습니다!
아래 코드는 역대 당첨 번호를 모두 수집하고 가장 일반적인 번호 23개를 식별하며 해당 데이터를 기반으로 5개의 무작위 조합을 생성하는 Python 스크립트를 안내합니다. 이 방법은 가장 자주 나타나는 숫자가 향후 라운드에서 선택될 가능성이 더 높다는 가정하에 작동합니다.
상사에 시달리는 직장인들은 이를 잘 살펴보고 확률 데이터로 로또를 사야 한다.
1. 필요한 라이브러리 가져오기
먼저 “requests”, “pandas” 및 “random” 스크립트에 필요한 Python 라이브러리를 가져와야 합니다.
import requests
import pandas as pd
import random
2. 지난 복권 번호를 가져오는 함수 정의
분석하려는 복권 라운드의 범위를 나타내는 두 개의 매개 변수 “start” 및 “end”를 허용하는 “get_lotto_number()”라는 함수를 만듭니다.
def get_lotto_numbers(start, end):
numbers = ()
for i in range(start, end+1):
url = f"https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={i}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
nums = (data(f"drwtNo{j}") for j in range(1,7))
numbers.extend(nums)
else:
print(f"{i}회차 크롤링 실패")
return numbers
3. 복권 데이터 가져오기 및 처리
함수 내에서 주어진 범위의 각 화자에 대한 JSON 데이터를 가져오고 6개의 숫자를 추출하는 루프를 만듭니다. 그런 다음 각 숫자의 빈도를 계산하고 23개의 가장 일반적인 숫자를 식별합니다.
start = int(input("시작 회차: "))
end = int(input("끝 회차: "))
numbers = get_lotto_numbers(start, end)
series = pd.Series(numbers)
rates = series.value_counts() / (end - start + 1) * 6
top_twenty_three = rates.sort_values(ascending=False).head(23)
4. 무작위 조합 생성
생성된 조합을 장려하기 위해 빈 목록을 만들고 상위 23개에서 6개의 숫자를 샘플링하여 5개의 임의 조합을 생성합니다.
for i in range(5):
six_nums = sorted(random.sample(top_twenty_three.index.tolist(), k=6))
results.append(six_nums)
5. 결과 표시
빈도가 가장 높은 무작위로 생성된 5개의 숫자 조합을 표시합니다.
print(f"비율이 가장 높은 숫자 중에서 랜덤하게 선택한 다섯 개의 조합은 다음과 같습니다.")
for i in range(5):
print(f"{i+1}번째 조합: {', '.join(map(str, results(i)))}")
위의 코드를 종합하면 다음과 같습니다.
# 파이썬 모듈 임포트
import requests
import pandas as pd
import random
# 로또 당첨번호 크롤링 함수 정의
def get_lotto_numbers(start, end):
# 빈 리스트 생성
numbers = ()
# 시작 회차부터 끝 회차까지 반복
for i in range(start, end+1):
# 동행로또 홈페이지에서 json 데이터 요청
url = f"https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={i}"
response = requests.get(url)
# 응답이 성공적이면
if response.status_code == 200:
# json 데이터에서 당첨번호 6개 추출
data = response.json()
nums = (data(f"drwtNo{j}") for j in range(1,7))
# 리스트에 추가
numbers.extend(nums)
else:
# 에러 메시지 출력
print(f"{i}회차 크롤링 실패")
# 리스트 반환
return numbers
# 원하는 회차 범위 입력 (예: 1회차부터 1020회차까지)
start = int(input("시작 회차: "))
end = int(input("끝 회차: "))
# 로또 당첨번호 크롤링 함수 호출
numbers = get_lotto_numbers(start, end)
# 판다스 시리즈로 변환하고 비율 계산 (전체 회차 * 6으로 나눔)
series = pd.Series(numbers)
rates = series.value_counts() / (end - start + 1) * 6
# 비율이 가장 높은 번호 순으로 정렬하고 상위 23개 선택
top_twenty_three = rates.sort_values(ascending=False).head(23)
# 결과 출력을 위한 빈 리스트 생성
results = ()
# 상위 번호 중에서 랜덤하게 선택하는 과정을 다섯 번 반복
for i in range(5):
# 상위 번호 중에서 랜덤하게 여섯 개 선택하고 오름차순 정렬
six_nums = sorted(random.sample(top_twenty_three.index.tolist(), k=6))
# 결과 리스트에 추가
results.append(six_nums)
# 결과 출력
print(f"비율이 가장 높은 숫자 중에서 랜덤하게 선택한 다섯 개의 조합은 다음과 같습니다.")
for i in range(5):
print(f"{i+1}번째 조합: {', '.join(map(str, results(i)))}")
졸업 증서
과거 복권 데이터와 Python을 사용하여 당첨 번호 조합을 생성하는 스크립트를 만들었습니다. 이 방법이 대박이 난다는 보장은 없지만 과거 추세에 따라 복권 번호를 선택했다면 실제로 확률이 1씩 증가하지 않을까요?
꼭 이 코드를 사용하여 로또에 당첨되어 당당하게 돈을 요구하는 남자가 되어보세요!
![큰 수의 법칙 [Greedy] 큰 수의 법칙 [Greedy]](https://ko.notus.kr/wp-content/plugins/contextual-related-posts/default.png)