앱 만들기/JavaScript study

로또 번호 자동 생성하기

나도 처음이야 2024. 8. 15.

지난 시간 PC에 설치된 브라우저에서 로또번호 를 한개씩 생성하는 방법을 알아보았다.

이번에는 6개의 숫자를 중복없이 생성하는 방법을 알아본다.

실행 결과물은 하기와 같다.

로또번호 받기 버튼을 클릭하면 로또 번호 6개를 받을 수 있다.

 




그럼, 소스를 살펴보자.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>로또</title>
  <script>    // 숫자를 중복체크
    // 로또 번호를 초기화 한다
    var number = [0,0,0,0,0,0] ;
    var rand ;
    var count;
    var duplicate;
    function lotto(){    
      count=0;
   
      do{
          duplicate=false;
          rand = Math.floor(Math.random()*45) + 1; 
          for(var i=0 ; i < number.length; i++){
            if(number[i] == rand){
              duplicate = true;
              break;
            }
          }
          if(!duplicate){
            number[count]= rand;
            count++; 
          }                    
      }while(count < 6)

      document.getElementById("result").innerHTML = "🍀 행운번호 🍀</br>" + number;
    }
  </script>  
</head>
<body>
  <input type="button" value="로또번호 받기" onclick="lotto();">
  <div id="result"></div>
</body>
</html>

 

소스는 크게 자바스크립트 코드 부분과 HTML 요소 이렇게 두개로 나뉜다.

 

1. HTML 요소 (버튼 과 숫자가 표시될 영역)

  <input type="button" value="로또번호 받기" onclick="lotto();">
  <div id="result"></div>

 

 1-1. 버튼

 input 타입을 활용해서 버튼을 만들었다.

 버튼 클릭시 동작을 위해서 lotto2() 함수를 연결한다.

 

 1-2. div (숫자가 표시될 영역)

 숫자가 표시될 영역으로 div 요소를 설정한다.

 

2. 자바스크립트 ( 함수 )

버튼 클릭시 동작을 위한 자바스크립트 함수 부분이다.

로또 번호를 얻는 핵심 알고리즘이 이 함수 하나에 들어있다.

 

 2-1. 함수에서 사용될 변수를 선언한다.

  <script>    
    // 로또 번호를 초기화 한다
    var number = [0,0,0,0,0,0] ;
    var rand ;
    var count;
    var duplicate;

 

 number 는 6개의 로또 번호를 받기위해서 6개의 0 값으로 초기화 한다.

 rand : 난수를 저장하는 변수

 count : 카운트 변수

 duplicate : 중복 체크를 위한 불연 변수

 

  2-2 . 로또번호 생성 함수

 function lotto(){    
      count=0;
   
      do{
          duplicate=false;
          rand = Math.floor(Math.random()*45) + 1; 
          for(var i=0 ; i < number.length; i++){
            if(number[i] == rand){
              duplicate = true;
              break;
            }
          }
          if(!duplicate){
            number[count]= rand;
            count++; 
          }                    
      }while(count < 6)

      document.getElementById("result").innerHTML = "🍀 행운번호 🍀</br>" + number;
    }

 

2-2-1. do..while() 반복문

         6개의 숫자가 다 채워질때 까지 돌린다.

2-2-2. Math.floor(Math.random*45) + 1 
         1~45 까지의 랜덤 숫자를 얻는다.

2-2-3. 중복체크

        난수가 기존 6개의 숫자와 중복인지 체크한다.

        중복되는 숫자를 하나라도 만나면 duplicate 변수를 true 로 세팅하고 for문을 종료한다.

 for(var i=0 ; i < number.length; i++){
            if(number[i] == rand){
              duplicate = true;
              break;
            }
          }

 

2-2-4. 번호 저장

난수가 중복이 아니라면, 배열 요소의 index 순서(count) 대로 하나씩 숫자를 저장한다.

 if(!duplicate){
            number[count]= rand;
            count++; 
          }

 

2-2-5. 번호 출력

반복문을 마치고 얻은 6개의 숫자를 div 영역에 표기한다.

 document.getElementById("result").innerHTML = "🍀 행운번호 🍀</br>" + number;

 

로또 번호 생성기를 통해서

랜덤 함수 와 반복문 

그리고 자바스크립 와 HTML 요소의 연결 등을 배울 수 있다.

간단한 코드지만, 재미있게 그리고 실제 로또번호에도 활용할 수 있다.

Good!

반응형

댓글