Math()를 이용하여 로또번호 뽑아보자

이경준·2020년 11월 20일
0

Math()

수학적인 함수를 위한 내장 객체이다. Math()자체만으로는 사용할 수 없으며 Math.random() , Math.floor()와 같이 사용가능하다.

Math.random()

0~1사이에 값을 랜덤으로 뽑아준다. 1은 포함되지 않으며 0.999999와 같이 소수자리까지 포함하여 뽑아낸다.

Math.floor(값), Math.ceil(값),Math.round(값)

소수를 버린다, 소수를 올림한다, 소수를 반올림한다.


연습1) 0~10사이에 랜덤값을 구하자.

const randomNumber = Math.random();
//0 <= x < 1
const randomNumber2 = randomNumber * 10;
//0 <= x < 10
const randomNumber3 = Math.ceil(randomNumber2);
console.log(randomNumber3);
//0 <= x <= 10

randomNumber는 0부터 1이 포함되지 않은 숫자 까지의 랜덤을 나타낸다. 즉 0.999999...까지 나올 것이다. 거기에 10을 곱하면 9.999999...까지로 나오게 되고 Math.ceil()을 사용하여 소수점을 올리면 10까지 포함된 랜덤 숫자를 뽑을 수 있다. ceil을 쓰기 전까지 10이 포함되지 않는다는것을 주의 하여야 한다.


연습2) 10~20사이에 랜덤값을 구하자.

const randomNumber4 = randomNumber3 + 10;
//randomNumber = Math.ceil(Math.random()*10+10)
//10 <= x <= 20

연습1코드에서 그대로 10을 더하면 10~20까지의 랜덤 숫자를 뽑을 수 있다. 연습1에서는 0부터 10까지였다 거기서 10을 더하면 0이 10이되고 10까지였던 숫자는 20이 되어 10<=x<=20을 구할 수 있는 것이다.


중간정리)

랜덤숫자 범위를 지정하는 것은 공식이 있다는 것을 알 수 있다.
최종숫자 빼기 처음숫자의 값을 곱하고 처음숫자를 더하면 된다.
단계별로 보도록 하자
1. Math.random()으로 0~1사이에 숫자를 랜덤으로 뽑는다
2. Math.random()(최종값-시작값)을 하여 최종숫자를 정한다.
3.Math.random()
(최종값-시작값)+시작값을 하여 시작값을 지정한다.
4.Math.ceil로 감싸서 소수점을 올림하면 마지막 숫자도 포함할 수 있다.


연습3) 함수로 만들어보자

const randomNumber5 = function(startNum,endNum){
  const random = Math.ceil(Math.random()*(endNum-startNum)+startNum) ;
  return random;
};
console.log(randomNumber5(10,40));
//10 <= x <=40

함수의 인자값을 넣어서 필요할때 쓸 수 있다.


연습4) 로또번호를 뽑아보자

const lotto = function(){
  const lottoNumbers = []; 
  while(lottoNumbers.length < 6){
    const random = randomNumber(1,45);
  	if(!lottoNumbers.includes(random)){
      lottoNumbers.push(random);
    }
  }
  return lottoNumbers;
};

console.log(lotto());
//[6개의 랜덤 숫자]

연습3에서 만든 함수를 사용하여 로또 번호를 뽑았다.
로또번호 6개가 완성될때까지 반복할수 있도록 while문을 사용하였으며, 같은 숫자가 반복적으로 들어가지 않도록 if문으로 중복을 막았고 빈배열에 push()하는 방법으로 로또번호 6개를 완성하였다.

처음엔 for문으로 시도했지만 중복되는 숫자가 안들어가면서 5개만 뽑히는 문제가 생겨서 while문으로 legnth가 6개가 되면 멈추도록 구현하였다.

profile
내가 기억하기위한 블로그

0개의 댓글