본문 바로가기

파이썬으로 로또 1등 도전기

23일차) 당첨된 보너스 히스토리 제외수 추가

 

여기서는 선택한 회차를 기준으로 몇 회 전 보너스 번호를 제외수에 포함시키는 과정을 다룹니다. 이 코드는 일종의 "보너스 히스토리 제외수"를 만들어 주는 코드입니다. 선택한 회차를 기준으로 2, 4, 6, 8, 10회 전의 보너스 번호를 추출해 제외수 리스트에 추가하는 방법을 살펴볼게요.

---

### 1. 핵심 함수 소개: `get_bonus_numbers_for_selected_intervals`
먼저, `get_bonus_numbers_for_selected_intervals` 함수는 과거 몇 회차의 보너스 번호를 한 번에 가져와 줍니다. 여기서 우리가 설정한 간격은 2, 4, 6, 8, 10회 전이죠. 예를 들어, 현재 1143회차를 기준으로 한다면:
- 1141회차, 1139회차, 1137회차, 1135회차, 1133회차의 보너스 번호를 뽑아옵니다!

이제 코드로 들어가서 어떤 일이 일어나는지 보죠:

def get_bonus_numbers_for_selected_intervals(winning_numbers, current_round):
    """
    특정 간격(2, 4, 6, 8, 10회 전) 회차의 보너스 번호를 가져옵니다.
    """
    intervals = [2, 4, 6, 8, 10]
    bonus_numbers = set()  # 보너스 번호를 담을 집합 (중복 방지!)

    for interval in intervals:
        round_no = current_round - interval  # 각 간격에 따른 회차를 계산
        if round_no in winning_numbers:
            bonus_numbers.add(winning_numbers[round_no]['bonus'])  # 보너스 번호 추가
    
    return bonus_numbers



여기서 중요한 부분은:
- `intervals` 리스트: 이 리스트는 특정 회차 간격을 정의하고, 간격을 기준으로 각 회차를 쉽게 계산할 수 있게 합니다.
- `bonus_numbers` 집합: 여기서 집합(set)을 사용하는 이유는 보너스 번호의 중복을 피하기 위함입니다. 예를 들어 2회 전과 6회 전에 같은 보너스 번호가 나왔다면, 중복 없이 한 번만 추가됩니다.

### 2. `get_combined_excluded_numbers` 함수
이 함수는 우리가 만든 보너스 히스토리 제외수를 포함하여 최종적인 제외수 리스트를 반환합니다. 여기서 매력적인 부분은 "특정 과거 회차의 보너스 번호"라는 데이터를 활용해서 제외수를 만드는 부분이에요. 이런 방식은 단순히 상위 출현 빈도와 하위 출현 빈도를 사용하는 것보다 좀 더 다차원적인 제외수를 만들게 해줍니다.

def get_combined_excluded_numbers(round, combined_excluded_numbers):
    """
    최근 30회차 로또 번호를 가져오고,
    출현 빈도를 기반으로 상위 3개 및 하위 3개 번호를 추가한 유니크한 제외수 리스트를 반환합니다.
    """
    # 최근 30회차 로또 번호를 가져옴
    recent_lotto_numbers = fetch_recent_lotto_missing_numbers()
    combined_excluded_numbers.update(recent_lotto_numbers)

    # 특정 간격의 보너스 번호 가져오기
    bonus_numbers_from_intervals = get_bonus_numbers_for_selected_intervals(winning_numbers, round)
    print('Bonus numbers from selected intervals:', bonus_numbers_from_intervals)
    combined_excluded_numbers.update(bonus_numbers_from_intervals)
    
    # 그 외 제외수 추가 작업들...
    # (상위 및 하위 빈도 번호 추가 등)

    # 최종 제외수 리스트 반환
    return unique_excluded_numbers



이 함수에서 추가된 **보너스 번호의 존재 의미**는 무시할 수 없습니다! 누적 데이터를 사용해 향후 출현 가능성이 적은 수를 예측하고 배제할 때 특히 유용합니다.

### 3. 왜 재미있을까요?
이 방식은 마치 추리소설에서 단서를 찾듯이 과거의 "특별"한 숫자들을 다시 탐색하고 분석해 우리가 원하는 방향으로 예측하는 느낌을 줍니다. 특정 회차 간격을 활용해 제외수를 만드는 과정은 그 자체로 "역사에서 단서를 찾는 재미"를 느끼게 해줍니다.

---

이 코드가 이제 어떻게 동작하는지 명확히 이해하셨길 바라며, 다가오는 로또 번호 생성에 행운이 깃들기를 바랍니다! 🍀