티스토리 뷰

자바스크립트에는 Math라는 내장 객체가 존재합니다. 이 내장객체는 랜덤으로 숫자를 반환받을 수 있는 메소드 random() 을 제공하는데, 여기에서는 이를 기본으로 1부터 45 사이의 숫자 6개를 반환받는 로또번호 추첨하기 스크립트를 작성해보도록 하겠습니다.

 

1
2
3
4
5
6
7
8
const number = []
while(number.length < 6){
  let ran = Math.floor(Math.random() * 45+ 1
  if(number.indexOf(ran) === -1){
    number.push(ran)
  }
}
console.log(number)

해설입니다. 

 

1행 : 비어있는 배열을 생성하였습니다. 이제 여기에 1부터 45 사이의 숫자를 랜덤으로 여섯 개 추가할 예정입니다. 

2행 : while 문을 실행시킵니다. 배열의 길이(length)가 6보다 작다면 반복문을 계속 실행합니다. 즉, 로또 번호 추첨이 끝날 때까지 반복문을 실행합니다.

3행 : Math.random() 을 사용했습니다. 이는 0부터 1 사이에서 난수(실수형)를 생성하여 반환해주는 기능입니다. 그러나 우리가 얻고자 하는 것은 1부터 45 사이의 숫자이므로, 여기에 45를 곱해주었습니다. 그러면 0부터 45 사이의 실수형 데이터를 얻을 수 있습니다. 마지막에는 이에 대해 Math.floor() 를 반영하여 소수점 이하 데이터를 제거해주고 1을 더해주었습니다. 그러면 결과적으로 1부터 45 사이의 난수를 얻을 수 있게 됩니다. 

4행 : 배열의 indexOf 메소드를 사용하였습니다. 이는 배열의 요소에 인자(여기에서는 ran)가 포함되어 있을 경우에는 인덱스 번호를, 포함되어 있지 않은 경우에는 -1을 반환하는 메소드입니다. 따라서 이 코드는 우리가 생성한 난수가 배열에 포함되어 있지 않다면 배열에 추가하겠다는 의도를 나타내고 싶습니다.

5행 : 배열에 요소 추가하기 메소드인 push 입니다.

8행 : 반복문이 끝났다는 것은 여섯 개의 숫자가 모두 배열에 추가되었음을 의미합니다. 따라서 반복문 이후에 이를 콘솔에 출력하면 번호 추첨이 끝난 결과를 확인할 수가 있습니다. 

 

아래는 코드의 실행 결과입니다.

 

1
44241433223 ]

코드는 랜덤으로 숫자를 생성하므로, 실행 결과를 코드를 실행시킬 때마다 달라집니다. 

 

 

댓글
공지사항