로또 1125회차 예상번호

기존 작성했던 코딩은 이전 당첨 번호 조합은 제외하고 무작위로 숫자를 선택하는 방법이었는데 자주 등장하지 않는 숫자를 우선적으로 선택하도록, 다시 말하면 각 숫자가 몇 번 등장했는지 계산하고 그 빈도가 적은 숫자를 선택하는 전략으로 코딩을 수정해보았다.  단순한 랜덤 추출보다는 그래도 규칙성이란 걸 가질 수 있으니 가능성을 조금은 더 높일 수 있지 않을까?

import random
from collections import Counter

# 편의상 1110회부터 1124회까지의 당첨 번호를 표본으로 설정했으니 필요하다면 추가 가능
winning_numbers = [
    [3, 7, 11, 20, 22, 41],   # 1110회
    [3, 13, 30, 33, 43, 35],  # 1111회
    [16, 20, 26, 36, 42, 44], # 1112회
    [11, 13, 20, 21, 32, 44], # 1113회
    [10, 16, 19, 32, 33, 38], # 1114회
    [7, 12, 23, 32, 34, 36],  # 1115회
    [15, 16, 17, 25, 30, 31], # 1116회
    [3, 4, 9, 30, 33, 36],    # 1117회
    [11, 13, 14, 15, 16, 45], # 1118회
    [1, 9, 12, 13, 20, 45],   # 1119회
    [2, 19, 26, 31, 38, 41],  # 1120회
    [6, 24, 31, 32, 38, 44],  # 1121회
    [3, 6, 21, 30, 34, 35],   # 1122회
    [13, 19, 21, 24, 34, 35], # 1123회
    [3, 8, 17, 30, 33, 34],   # 1124회
]

# 이전 당첨 번호 전체를 하나의 리스트로 합침
all_previous_numbers = [number for numbers in winning_numbers for number in numbers]

# 각 숫자의 등장 빈도를 계산
number_frequency = Counter(all_previous_numbers)

# 숫자를 출현 빈도가 적은 순서대로 정렬
sorted_numbers_by_frequency = sorted(range(1, 46), key=lambda x: number_frequency[x])

# 다음 회차 예상 번호를 구하는 함수
def generate_next_numbers(sorted_numbers):
    next_numbers = []
    while len(next_numbers) < 6:
        for number in sorted_numbers:
            if number not in next_numbers:
                next_numbers.append(number)
            if len(next_numbers) == 6:
                break
    return sorted(next_numbers)

# 1125회 예상 번호 5개 게임 생성하기
number_of_games = 5
all_games = []

for _ in range(number_of_games):
    expected_numbers = generate_next_numbers(sorted_numbers_by_frequency)
    all_games.append(expected_numbers)

# 최종 결과값 출력
print(f"1110회부터 1124회까지의 당첨 번호를 기반으로 1125회 예상 번호:")
for i, game in enumerate(all_games, 1):
    print(f"게임 {i}: {game}")

해서 5게임의 번호를 추출해보면

게임 1: [1, 6, 13, 20, 21, 34]
게임 2: [2, 7, 16, 19, 23, 30]
게임 3: [4, 11, 15, 25, 31, 38]
게임 4: [8, 12, 17, 26, 32, 44]
게임 5: [9, 14, 24, 33, 35, 42]

이런 조합을 얻을 수 있음.
목숨걸지 말고 재미삼아 합시다.