본문 바로가기
Cloud 개발

챗GPT를 활용한 로또 번호 생성기 만들기 및 소스 공개 (Ver. 1.0)

by 긋대디 2025. 2. 17.
반응형

Chat GPT를 활용한 로또번호 생성기 만들기

 

요즘 인공지능 기술이 빠르게 발전하면서 다양한 분야에서 활용되고 있어요. 특히 Chat GPT와 같은 언어 모델을 활용하면 재미있고 유용한 프로젝트를 쉽게 만들 수 있답니다. 이번 글에서는 Chat GPT를 활용한 로또번호 생성기를 만들어보는 방법을 소개할게요. 이번 글을 통해 개발자들이 위협도 받고 있다지만 중/고수 이상 개발자들에게도 기회의 장이 되지 않을까 해요.

 

1. Coilot에게 질문하기

먼저, 프로젝트를 시작하기 위해 저는 쉽게 사용가능한 윈도우에 Copilot을 활용해서 진행해 봤어요.

아래와 같은 질문을 하니 copilot이 3가지 분석법을 제시해 줬어요.

2. 통계적 기법을 적용한 소스 요청

위 알려준 조건으로 소스를 생성하도록 요청했어요. 그랬더니 요청한 html과 javascript로 로또번호 생성기를 만들어 줬어요. 참 쉽죠.

이제 일일이 로직을 몰라도 명령만으로 오류 없이 작동하는 소스를 몇 분만에 작성할 수 있다니... 대단한 세상이네요 

 

3. 코드 작성

이제 본격적으로 코드를 작성해볼게요. 아래는 위에서 작성된 코드입니다. 이 코드를 페이지로 만들어 실험하면 바로 작성 가능했습니다.

HTML 코드
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>로또 번호 생성기</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        .container {
            max-width: 600px;
            margin: auto;
        }
        .result {
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>로또 번호 생성기</h1>
        <form id="lottoForm">
            <label for="frequency">빈도수 분석 (최소 빈도수):</label>
            <input type="number" id="frequency" name="frequency" min="0" value="0"><br><br>
            
            <label for="oddEvenRatio">홀짝 비율 (홀수:짝수):</label>
            <input type="text" id="oddEvenRatio" name="oddEvenRatio" value="3:3"><br><br>
            
            <label for="range">구간 분석 (예: 1-9, 10-18, ...):</label>
            <input type="text" id="range" name="range" value="1-9,10-18,19-27,28-36,37-45"><br><br>
            
            <label for="consecutive">연속 번호 분석 (최소 연속 번호 수):</label>
            <input type="number" id="consecutive" name="consecutive" min="0" value="0"><br><br>
            
            <button type="button" onclick="generateLottoNumbers()">번호 생성</button>
        </form>
        <div class="result" id="result"></div>
    </div>

    <script src="lotto.js"></script>
</body>
</html>
JavaScript 코드 (lotto.js)
function generateLottoNumbers() {
    const frequency = parseInt(document.getElementById('frequency').value);
    const oddEvenRatio = document.getElementById('oddEvenRatio').value.split(':').map(Number);
    const ranges = document.getElementById('range').value.split(',').map(range => range.split('-').map(Number));
    const consecutive = parseInt(document.getElementById('consecutive').value);

    let lottoNumbers = [];
    while (lottoNumbers.length < 6) {
        const randomNumber = Math.floor(Math.random() * 45) + 1;
        if (!lottoNumbers.includes(randomNumber)) {
            lottoNumbers.push(randomNumber);
        }
    }
    lottoNumbers.sort((a, b) => a - b);

    // 조건 확인
    if (!checkFrequency(lottoNumbers, frequency) || 
        !checkOddEvenRatio(lottoNumbers, oddEvenRatio) || 
        !checkRanges(lottoNumbers, ranges) || 
        !checkConsecutive(lottoNumbers, consecutive)) {
        generateLottoNumbers();
        return;
    }

    document.getElementById('result').innerText = `Generated Lotto Numbers: ${lottoNumbers.join(', ')}`;
}

function checkFrequency(numbers, minFrequency) {
    // 빈도수 분석 로직 (예시: 모든 번호가 최소 빈도수를 만족하는지 확인)
    return true; // 실제 로직을 구현해야 합니다.
}

function checkOddEvenRatio(numbers, ratio) {
    const oddCount = numbers.filter(num => num % 2 !== 0).length;
    const evenCount = numbers.length - oddCount;
    return oddCount === ratio[0] && evenCount === ratio[1];
}

function checkRanges(numbers, ranges) {
    for (const range of ranges) {
        const count = numbers.filter(num => num >= range[0] && num <= range[1]).length;
        if (count === 0) return false;
    }
    return true;
}

function checkConsecutive(numbers, minConsecutive) {
    let consecutiveCount = 1;
    for (let i = 1; i < numbers.length; i++) {
        if (numbers[i] === numbers[i - 1] + 1) {
            consecutiveCount++;
            if (consecutiveCount >= minConsecutive) return true;
        } else {
            consecutiveCount = 1;
        }
    }
    return false;
}
이 HTML 페이지와 JavaScript 코드를 사용하면 사용자가 설정한 조건에 따라 로또 번호를 생성할 수 있습니다. 각 조건을 만족하는지 확인하는 로직은 예시로 제공되었으며, 실제 로직을 구현해야 합니다.

AI로 만든 로또번호 생성기

 

4. 최종 화면 완성 화면

위 코드는 OpenAI의 GPT를 활용하여 생성된 것으로 조금 더 디자인을 넣고 원하는 기능들을 요청하여 아래와 같은 화면으로 30분만에 완성 하였습니다. 저도 처음 해본것이라 프롬프트 작성에 시행착오가 있었지만, 해보니 참 좋네요. 이렇게 해서 빠르게 코딩하는 것도 개발자들에서 좋은것 같습니다. 그래서 인지 요즘 신입분들과 얘기해보면 GPT 안되는 개발 환경을 못간다는 말을 하더라구요.

gpt에게 디자인 및 기타 수정사항 요청
ChatGPT로 간단하게 만들 로또번호 생성기

마무리

이렇게 해서 Chat GPT를 활용한 로또번호 생성기를 만들어봤어요. 인공지능을 활용한 다양한 개발 도움을 통해 여러분의 창의력을 발휘해보세요! 이 글이 도움이 되셨다면 좋아요 부탁드려요. 😊

반응형