로또번호 생성기 Upgrade (feat. Python)

도전 Lotto 6/45 (tistory.com)

도전 Lotto 6/45

2024.6.11. 추천 번호: 9, 14, 25, 30, 31, 45 ==================================================================파이썬을 사용하면 정말 다양한 결과물을 만들어낼 수 있다. 아래는 파이썬의 random 모듈을 이용해 1부터 4

ggoose.tistory.com

 
지난 번에는 파이썬을 이용해 아주 간단한 랜덤번호 생성기를 만들어보았다.
 
이번에는 나름 통계를 이용해서 1110회차부터 1124회차까지의 통계적인 규칙성을 찾아보고(표본이 너무 적다고 생각되면 알아서 늘려보시길...) 다음 회차인 1125회차로 예상되는 번호를 추출하는 코딩인데, 어디까지나 재미삼아 하는 것이니 너무 심각하게 당첨을 바라고 하지는 말자.
 

import random  # random 모듈을 import

# 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 = set()
for numbers in winning_numbers:
    all_previous_numbers.update(numbers)

# 다음 회차 예상 번호를 구하는 함수 추가
def generate_next_numbers(previous_numbers):
    next_numbers = []
    while len(next_numbers) < 6:
        number = random.randint(1, 45)
        if number not in previous_numbers and number not in next_numbers:
            next_numbers.append(number)
    return sorted(next_numbers)

# 1125회 예상 번호 생성하기
expected_numbers_1125 = generate_next_numbers(all_previous_numbers)

# 최종 결과값 출력
print(f"1110회부터 1124회까지의 당첨 번호를 기반으로 1125회 예상 번호:")
print(expected_numbers_1125)

 
해서 위의 코딩 출력값으로 생성된 최종 번호는???
 

결과값. 랜덤이니 심각하게 접근하지 말자.

 

이번 회차에 시도할 번호는 5, 10, 32, 36, 37, 43 이다. 

 

 
가즈아!!!!!!!!!!!!!!!!!!!!
 
 

5게임을 한 번에 랜덤 생성하고 싶다면

 
아래의 코딩으로 시도해 보시길
 

import random  # random 모듈을 import

# 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 = set()
for numbers in winning_numbers:
    all_previous_numbers.update(numbers)

# 다음 회차 예상 번호를 구하는 함수 추가
def generate_next_numbers(previous_numbers):
    next_numbers = []
    while len(next_numbers) < 6:
        number = random.randint(1, 45)
        if number not in previous_numbers and number not in next_numbers:
            next_numbers.append(number)
    return sorted(next_numbers)

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

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

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