본문 바로가기
vita_Programing

로또 645 1등 당첨 예상번호 생성기 소스

by lemonvita 2024. 5. 31.
728x90
반응형

 

 

 

로또 645 1등 당첨 예상번호 생성기 소스

 

 

728x90

로또번호 생성기 javascript

 

이번 주 로또 1등에 당첨되면 얼마나 좋을까요? 주말이 다가올 때마다 로또 복권을 사며 막연한 기대감을 가지곤 합니다. 필자도 어제 로또를 5게임 구매했습니다. 그러나 실제로 당첨 번호를 맞추는 일은 생각만큼 쉽지 않은 것 같습니다. 그렇다고 포기할 수는 없죠! 그래서 오늘은 여러분과 함께 로또 번호 생성기를 만들어 보려고 합니다. 이 생성기는 과거의 1등 당첨 번호를 제외하고 새로운 번호를 생성하는 기능이 탑재되어 있습니다. 과거의 당첨 번호를 배제함으로써 조금이라도 당첨 확률을 높여보자는 소망이 담겨 있습니다. 설마 과거에 당첨된 1등 번호가 또 당첨되지는 않겠지요?

HTML, CSS, JavaScript를 이용해 간단하게 구현할 수 있는 이 로또 번호 생성기를 통해, 이번 주에는 1등 당첨의 꿈을 함께 꾸어보시지요. 이제, 로또 번호 생성기가 어떻게 작동하는지 자세히 살펴보고 직접 만들어 보겠습니다. 생성된 번호가 행운의 번호가 되기를 바라며, 여러분도 이 프로그램을 통해 로또 1등 당첨의 기쁨을 누리게 되길 바랍니다!

 

ps. 1등 당첨되면 바로 퇴사합니다.

 

로또번호 생성기

 

로또번호 생성기

index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>인생역전 - 나눔로또 번호 생성기</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <h1>인생역전 - 나눔로또 번호 생성기</h1>
        <button onclick="generateLottoNumbers()">번호 생성</button>
        <div id="result"></div>
    </div>
    <script src="script.js"></script>
</body>
</html>

 

 

 

style.css

/* styles.css */
body {
    font-family: Arial, sans-serif;
    background-color: #f5f5f5;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

.container {
    text-align: center;
    background: white;
    padding: 20px;
    border-radius: 10px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

button {
    padding: 10px 20px;
    background-color: #4CAF50;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 16px;
}

button:hover {
    background-color: #45a049;
}

#result {
    margin-top: 20px;
    font-size: 24px;
}

 

 

 

script.js

// 과거의 1등 당첨 번호 (예시 데이터)
const pastWinningNumbers = [
    [3, 11, 15, 29, 35, 44],
    [1, 7, 13, 23, 28, 41],
    [4, 9, 17, 19, 33, 40],
    // 추가 데이터...
];

// 로또 번호를 생성하는 함수
function generateLottoNumbers() {
    let numbers;
    do {
        numbers = [];
        // 1에서 45 사이의 숫자 중 중복되지 않는 6개의 숫자를 랜덤으로 선택
        while (numbers.length < 6) {
            let num = Math.floor(Math.random() * 45) + 1;
            if (!numbers.includes(num)) {
                numbers.push(num);
            }
        }
        // 숫자를 오름차순으로 정렬
        numbers.sort((a, b) => a - b);
    // 생성된 번호가 과거의 1등 당첨 번호와 중복되지 않을 때까지 반복
    } while (isPastWinning(numbers));

    // 생성된 번호를 화면에 출력
    displayNumbers(numbers);
}

// 생성된 번호가 과거의 1등 당첨 번호와 중복되는지 확인하는 함수
function isPastWinning(numbers) {
    return pastWinningNumbers.some(winningSet => 
        winningSet.every((num, index) => num === numbers[index])
    );
}

// 생성된 번호를 HTML 요소에 출력하는 함수
function displayNumbers(numbers) {
    const resultDiv = document.getElementById('result');
    resultDiv.innerHTML = '생성된 번호: ' + numbers.join(', ');
}

 

 

1. 과거의 1등 당첨 번호 데이터

 

코드의 시작 부분에는 과거의 1등 당첨 번호를 저장한 배열 pastWinningNumbers가 있습니다. 이 배열은 로또 번호가 생성될 때 해당 번호가 과거의 1등 번호와 중복되지 않도록 비교하는 데 사용됩니다.

이 배열에 실제 과거의 로또 1등 당첨 번호를 입력해 주어야 합니다. (가까운 시일 내에 이 부분을 자동화하도록 보완할 예정입니다.) 우선 이번 글은 로직을 이해하자는 차원에서...

const pastWinningNumbers = [
    [3, 11, 15, 29, 35, 44],
    [1, 7, 13, 23, 28, 41],
    [4, 9, 17, 19, 33, 40],
    // 추가 데이터...
];

 

 

2. 로또 번호 생성 함수 (generateLottoNumbers)

 

generateLottoNumbers 함수는 새로운 로또 번호 세트를 생성합니다.

  • 이 함수는 numbers 배열을 초기화한 후, 6개의 중복되지 않는 숫자를 랜덤으로 선택합니다.
  • Math.random() 함수를 사용하여 1에서 45 사이의 숫자를 생성하고, numbers 배열에 없는 숫자만 추가합니다.
  • numbers 배열이 6개의 숫자로 채워지면, 숫자를 오름차순으로 정렬해 줍니다.
  • 생성된 번호가 과거의 1등 당첨 번호와 중복되지 않을 때까지 이 루틴을 반복합니다. 중복 여부는 isPastWinning 함수로 확인합니다.
  • 마지막으로, 생성된 번호를 displayNumbers 함수를 사용하여 화면에 출력합니다.
function generateLottoNumbers() {
    let numbers;
    do {
        numbers = [];
        while (numbers.length < 6) {
            let num = Math.floor(Math.random() * 45) + 1;
            if (!numbers.includes(num)) {
                numbers.push(num);
            }
        }
        numbers.sort((a, b) => a - b);
    } while (isPastWinning(numbers));

    displayNumbers(numbers);
}

 

 

3. 과거 당첨 번호 중복 확인 함수 (isPastWinning)

 

isPastWinning 함수는 생성된 번호가 과거의 1등 당첨 번호와 중복되는지 확인합니다.

  • pastWinningNumbers 배열의 각 항목과 생성된 번호 배열을 비교합니다.
  • Array.prototype.some 메서드는 배열의 어떤 요소라도 주어진 조건을 만족하는지 테스트합니다.
  • Array.prototype.every 메서드는 배열의 모든 요소가 주어진 조건을 만족하는지 테스트합니다.
  • 생성된 번호 배열과 과거의 1등 번호 배열이 동일하면 true를 반환하여 중복임을 알립니다.
function isPastWinning(numbers) {
    return pastWinningNumbers.some(winningSet => 
        winningSet.every((num, index) => num === numbers[index])
    );
}

 

 

4. 번호 출력 함수 (displayNumbers)

 

displayNumbers 함수는 생성된 번호를 HTML 요소에 출력합니다.

  • getElementById 메서드를 사용하여 result div 요소를 가져옵니다.
  • innerHTML 속성을 사용하여 생성된 번호를 출력합니다.
function displayNumbers(numbers) {
    const resultDiv = document.getElementById('result');
    resultDiv.innerHTML = '생성된 번호: ' + numbers.join(', ');
}

 

 

 

사족

 

이 프로그램은 한가지 불편한 점이 있습니다.

과거 1등 번호를 일일이 pastWinningNumbers라는 배열에 등록해 주어야 한다는 것입니다.

다음 주가 되면 다시 바로 전 주의 1등 당첨번호를 수기로추가해 주어야 하는 귀찮은 일이 매주 반복되어야 합니다.

 

그래서 다음 글에서는 이 코드를 보강하여 실제 과거의 로또 1등 당첨번호를 API 호출을 통해 가져오도록 하겠습니다.

728x90
반응형