개발일기

침착맨 로또 번호 연구를 바탕으로 로또 번호 생성기 만들어서 실제로 구매하기

알롱지 2024. 7. 11. 15:58
반응형

 

침착맨에 로또 번호 연구를 하길래 

나름 최근 통계를 가지고 흐름을 파악해서 구매하길래 

그 구매 자체에도 내 생각이 들어가니까 

흐름까지의 이론만 넣고 로또 번호 생성기를 만들어봤다 

GOD GPT에게 다 맡기고 파이썬으로 간단하게 만들었다. 

 

import sys
import random
import pygame
import os
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QHBoxLayout, QFrame
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QFont

# 제외할 번호와 짝짝꿍 번호 제외
excluded_numbers = {10, 18, 23, 27, 29, 39, 42, 43}

# 번호 추첨 함수
def draw_lotto():
    while True:
        numbers = set()

        # 30-39번대에서 2-3개 추첨
        thirties = [num for num in range(30, 40) if num not in excluded_numbers]
        numbers.update(random.sample(thirties, random.randint(2, 3)))

        # 10-29번대에서 1개 추첨
        twenties = [num for num in range(10, 30) if num not in excluded_numbers]
        numbers.add(random.choice(twenties))

        # 1-9번대에서 2-3개 추첨
        single_digits = [num for num in range(1, 10) if num not in excluded_numbers]
        numbers.update(random.sample(single_digits, random.randint(2, 3)))

        # 중복된 숫자 포함 여부 확인 및 6개의 숫자 완성 확인
        if len(numbers) != 6:
            continue

        # 짝짝꿍 번호 포함 여부 확인
        sorted_numbers = sorted(numbers)
        has_pair = any(sorted_numbers[i] + 1 == sorted_numbers[i + 1] for i in range(5))

        # (1, 2, 3, 4, 5, 6)와 같은 연속된 숫자 조합 제외
        is_sequential = sorted_numbers == list(range(sorted_numbers[0], sorted_numbers[0] + 6))

        if has_pair and not is_sequential:
            return sorted_numbers

class LottoApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        pygame.mixer.init()
        current_dir = os.path.dirname(os.path.abspath(__file__))
        file_path = os.path.join(current_dir, '그런건-없어요.mp3')
        self.roulette_sound = pygame.mixer.Sound(file_path)  # 룰렛 소리 파일 경로 설정
    
    def initUI(self):
        # 메인 레이아웃 설정
        main_layout = QVBoxLayout()

        # 제목 라벨 설정
        title = QLabel('Lotto Number Picker', self)
        title.setFont(QFont('Arial', 24, QFont.Bold))
        title.setAlignment(Qt.AlignCenter)
        main_layout.addWidget(title)

        # 번호 표시 프레임
        self.numbers_frame = QFrame(self)
        self.numbers_layout = QHBoxLayout()
        self.numbers_frame.setLayout(self.numbers_layout)
        main_layout.addWidget(self.numbers_frame)

        # 번호 표시 라벨
        self.number_labels = [QLabel(self) for _ in range(6)]
        for label in self.number_labels:
            label.setFont(QFont('Arial', 18))
            label.setFrameShape(QFrame.Box)
            label.setAlignment(Qt.AlignCenter)
            label.setMinimumWidth(50)
            self.numbers_layout.addWidget(label)

        # "Good Luck" 라벨 설정
        self.good_luck_label = QLabel('', self)
        self.good_luck_label.setFont(QFont('Arial', 20, QFont.Bold))
        self.good_luck_label.setAlignment(Qt.AlignCenter)
        main_layout.addWidget(self.good_luck_label)

        # 버튼 생성
        self.button = QPushButton('Draw Numbers', self)
        self.button.setFont(QFont('Arial', 18))
        self.button.clicked.connect(self.play_roulette_sound)
        main_layout.addWidget(self.button)

        # 레이아웃을 메인 윈도우에 설정
        self.setLayout(main_layout)

        # 메인 윈도우 설정
        self.setWindowTitle('Casino Style Lotto Number Picker')
        self.setGeometry(300, 300, 400, 300)
        self.show()

    def play_roulette_sound(self):
        self.roulette_sound.play()
        QTimer.singleShot(1000, self.stop_roulette_sound_and_show_numbers)  # 1초 후 소리를 멈추고 번호를 표시

    def stop_roulette_sound_and_show_numbers(self):
        self.roulette_sound.stop()
        self.show_numbers()

    def show_numbers(self):
        numbers = draw_lotto()
        for label, number in zip(self.number_labels, numbers):
            label.setText(str(number))
        
        # "Good Luck" 메시지 표시
        self.good_luck_label.setText('Good Luck!')

        # 번호 라벨 배경색 변경
        for label in self.number_labels:
            label.setStyleSheet("background-color: yellow; color: black;")

# 애플리케이션 실행
app = QApplication(sys.argv)
ex = LottoApp()
sys.exit(app.exec_())

**하드 코딩 주의 .... 

 

 

 

 

주석도 깔끔하게 달아주니 개발자가 아니여도 알아볼 정도.... 킹갓GPT

침착맨의 이론에서 중요한건 

 

최근 10게임에서 색깔별로 나오는 흐름! 

 

동행복권을 보면 당첨 내역들이 쫙 나오는데

10번대로 각 색들이 있다. 

요즘 쭉 나오고 있는 색들과, 뜸한 색들을 자기만의 판단으로 정의를 했다. 

 

 

 

 

 

짝짝꿍 번호를 잊지 말 것

연속된 번호로 한 회차에 연속된 번호로 당첨이 나타난 경우를 잊지 말아야 한다.

(3,4)  (4,5)  (33,34)  와 같은 연속된 번호도 자주 출연하니 이 경우도 포함해줬다. 

 

 

그리고 로또번호 연구의 정신에 따라 

(1,2,3,4,5,6)으로 나오는 생성 번호는 금지 시켰다. 

죽는 와중에도 이 번호는 뽑지 말아주.... 

 

 

 

 

이 이론으로 사본 결과

5,000원 당첨... ㄷㄷㄷ 

3개만 더 맞았으면  1등인데!!

 

 

우선 회색기운(31-39)의 심상치 않음을 잘 느끼고 2개 연속으로 나온걸 적중 

그리고 짝짝꿍도 (30,31) 나와 줬다! 

 

그 이외에는 놓쳐서 5,000원 만 당첨 됐다 ㅠㅜ 

조금 손 본다면 나름 쏠쏠(?) 할지도

 

 

 

 

다들 쓸수 있게 파이썬 파일이 아니라 

실행 파일로 변경해서 공유합니다. 

 

이 짓을 처음 해보는데 이 간단한걸 실행파일 하나로 만들어서 실행하는데 

뭐가 이리 오래걸리는거지

 

처음 실행하면 

이 화면이 뜨고 기다리면 된다

많으면 30초에서 1분 

 

그러면 이렇게 뜨고 

 

실행 화면이 나타난다 

 

 

나는 웹 개발자라 프로그램 관련된건 학교다닐때 말곤 해본적이 없는데 

이런거 하나 만드는데 뭔 50MB 그마저도 해결할라면 가상환경에서 이것저것 해야한다길래 

패스하고 그냥 구글드라이브에 통으로 올리고 링크 공유 

 

 

 

 

로또 번호 생성기 프로그램

https://drive.google.com/file/d/1eWsG8EFSJGLevsMqKYU4IbK8wP7HQ2gJ/view?usp=sharing

 

lotto_app

 

drive.google.com

 

 

 

 

반응형