자바스크립트 JS/JS 입문 공부일지

자바 스크립트(js) 입문 공부 14. Math, 로또 추첨 번호 만들기

Tomitom 2022. 11. 22. 11:05
반응형

공부 출처 : http://www.tcpschool.com/javascript/js_standard_math, 유노코딩 youtube 

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 

Math는 수와 관련된 속성과 메소드를 가진 내장 객체입니다.

대부분의 Math 메소드는 각 브라우저마다 다른 결과값을 얻을 수 있으므로, 정확한 값이 필요한 경우에는 Math를 사용하지 않는 것이 좋습니다. 

생성자가 아니라 메소드, 속성으로 사용하므로 다음 문법으로 작성합니다. 

 

Math.메소드() 

Math.속성

 

Math 의 메소드 속성들은 다음과 같습니다. 

 

 

이 이외에도 Math.min(), Math.max() 등 Math의 메소드는 무척 다양하니, 자주 쓰는 것들을 위주로 하나씩 확인해볼게요. 

 

Math.min() 

 

Math.min() 메소드는 인수로 전달받은 값 중에서 가장 작은 수를 반환합니다.
인수가 전달되지 않으면 Infinity를 반환하며, 인수 중에 비교할 수 없는 값이 포함되어 있으면 NaN을 반환합니다.

 

Math.min();                              // Infinity

Math.min(1, 10, -100, -10, 1000, 0);     // -100

Math.min(1, 10, -100, -10, "-1000", 0);  // -1000

Math.min(1, 10, -100, -10, "문자열", 0); // NaN

 

Math.max()

 

Math.max() 메소드는 인수로 전달받은 값 중에서 가장 큰 수를 반환합니다.
인수가 전달되지 않으면 -Infinity를 반환하며, 인수 중에 비교할 수 없는 값이 포함되어 있으면 NaN을 반환합니다.

 

Math.max();                              // -Infinity

Math.max(1, 10, -100, -10, 100, 0);      // 100

Math.max(1, 10, -100, -10, "1000", 0);   // 1000

Math.max(1, 10, -100, -10, "문자열", 0); // NaN

 

Math.random()

Math.random() 메소드는 0보다 크거나 같고 1보다 작은 무작위 숫자(random number)를 반환합니다.

 

console.log(Math.random()) // 0부터 1사이의 실수가 랜덤하게 반환이 된다.

 

Math.round() 

Math.round() 메소드는 인수로 전달받은 값을 소수점 첫 번째 자리에서 반올림하여 그 값을 반환합니다.

 

Math.round(10.49);  // 10

Math.round(10.5);   // 11

Math.round(-10.5);  // -10

Math.round(-10.51); // -11

 

Math.floor()

Math.floor() 메소드는 인수로 전달받은 값과 같거나 작은 수 중에서 가장 큰 정수를 반환합니다.

 

Math.floor(10.95);  // 10

Math.floor(11.01);  // 11

Math.floor(-10.95); // -11

Math.floor(-11.01); // -12

 

 

Math.ceil()

Math.ceil() 메소드는 인수로 전달받은 값과 같거나 큰 수 중에서 가장 작은 정수를 반환합니다.

 

Math.ceil(10.95);  // 11

Math.ceil(11.01);  // 12

Math.ceil(11);     // 11

Math.ceil(-10.95); // -10

Math.ceil(-11.01); // -11

 

Math.sin() 

Math.sin() 메소드는 인수로 전달받은 값의 사인(sine) 함수값을 반환합니다.

 

Math.sin(0);           // 0

Math.sin(Math.PI / 2); // 1

위 Math() 메소드를 이용해서 로또 랜덤숫자를 만들어볼게요. 

우선 for문으로 45까지 이어지는 숫자들을 랜덤으로 출력할 수 있게 만들어보겠습니다. 

// floor 는 소수점 이하를 걷어내는 기능 
//비어 있는 배열을 만들어서 랜덤 숫자를 넣어준다. 
let lotto = []

for(let i = 0 ; i < 6; i +=1 ){
let rn = Math.floor(Math.random()*45)+1
lotto.push(rn)
}

console.log(lotto)

 

실행 콘솔 화면은 다음과 같습니다. 

 

하지만 이렇게 for문으로 작성하면 중복되는 랜덤숫자가 발생합니다. 

즉 반복횟수에 따라 반복을 하는 for문을 작성하면 안되고,

while 문으로 조건에 따라 수행을 할 수 있도록 작성을 해야합니다.

 

let lotto = []

while(lotto.length <6){  // 로또 배열의 길이가 6보다 작으면 계속 진행한다. 
    let rn = Math.floor(Math.random()*45)+1
    if(lotto.indexOf(rn) == - 1){       // -1 은 없다는 뜻이다. 만약에, 배열 안에 rn 값이 없으면 그 때에만 리스트에 추가합니다.
        lotto.push(rn)
    }
}

console.log(lotto)

 

실행 콘솔 화면은 다음과 같습니다. 

 

이 다음에는 위 기능을 참고해서 다음에는 CSS와 HTML, JS 를 이용해서 로또 추첨기를 만드는 미니 프로젝트를 해보고, 

이어서 객체 리터럴에 대해 공부하겠습니다. 

 

 

반응형