본문 바로가기
Front-End/JavaScript

자바스크립트 예제(6)

by newny 2023. 2. 16.
반응형

로또번호 발생시키기

1 ~ 45개의 숫자 중 6개의 중복되지 않는 랜덤 번호를 추출하여 오름차순 정렬하시오

[결과]

[코드]

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>09_로또번호</title>
</head>
<body>

  <h3>로또번호</h3>

  <input type="button" value="로또번호발생" onclick="lotto()">
  <div id="demo"></div>

  <script>
    const lotto = () => {  
      const num = [];
      for(let i=0; i<45; i++) { // 45개의 번호가 들어있는 배열 생성
        num.push(i+1)
      }

      const lotto=[]; // 6개의 로또번호를 저장할 변수
      for(let i=0; i<6; i++) {
        let rand = Math.floor((Math.random()*num.length)) // num배열의 길이보다 작은 인덱스를 랜덤 추출
        lotto.push((num.splice(rand,1))[0]) // 추출한 인덱스번호에 해당하는 값을 lotto 배열에 넣으면서 num배열에서는 삭제함
      }

      lotto.sort((a,b)=>a-b); // 오름차순 정렬

      document.getElementById('demo').innerText = lotto // 출력
    }


  </script>
</body>
</html>

 

[다른풀이1]

function lotto() {

  let lotto = [] // 6개의 로또번호를 저장할 배열

  for (let i=0; i<6; i++) {
    lotto[i] = parseInt((Math.random()*45))+1 // 1~45 까지의 정수 랜덤 추출
    for(let j=0; j<i; j++) {
      if(lotto[i]==lotto[j]) { // 추출한 값이 다른 인덱스의 값과 같은지 중복확인
        i-- // 중복값이 배열에 없다면 i에서 1을 빼고 break함
        break
      }
    }
  }

  lotto.sort((a,b)=>a-b); // 오름차순 정렬

  document.getElementById('demo').innerText = lotto // 출력
}

 

[다른풀이2]

const lotto = () => {
  var lotto = [] // 6개의 로또번호를 저장할 배열
  while (lotto.length < 6) {
      var num = parseInt(Math.random() * 45 + 1); // 1~45 까지의 정수 랜덤 추출
      if (lotto.indexOf(num) === -1) { // 추출한 값이 다른 인덱스의 값과 같은지 중복확인
          lotto.push(num); // 중복값이 배열에 없다면 num을 lotto배열에 push
      }
  }

  lotto.sort((a,b)=>a-b); // 오름차순 정렬

  document.getElementById('demo').innerText = lotto // 출력
}
반응형

'Front-End > JavaScript' 카테고리의 다른 글

JavaScript(7) - 실습 : 회원가입  (0) 2023.02.17
JavaScript(6)-2  (0) 2023.02.16
JavaScript(6)-1  (2) 2023.02.16

댓글