자바스크립트

[자바스크립트] math를 이용한 구구단 연습 만들기

도하루박 2022. 10. 6. 12:08
반응형

math() 는 주로 페이징 처리를 할 때 쓰인다.

올림, 반올림, 내림, 난수를 가지고 있는 객체이다.

Math.floor(Math.random() * n) : 0 ~ n-1의 난수

<script>
    function getRandomInt(range){
        var result = Math.floor(Math.random() * range);
        result += range == 8 ? 2 : 1;
        return result;
    }
    var question = getRandomInt(8) + "x" + getRandomInt(9);
    var answer = eval(question);
    var myAnswer = prompt(question);
    document.write("<h3>" + (answer == myAnswer ? "정답" : "오답") + "</h3>");
</script>
 
 
function getRandomInt(range)
랜덤한 int 값을 받아서 리턴 해야 하기 때문에 getRandomInt() 를 사용하고 외부에서 범위를 받아주는 range를 넣어준다.
곱셈 식은 2 x 6 처럼 앞의 수는 2~9 의 수가 들어가야 하고 뒤의 수는 1~9가 곱해져야 곱셈식이 완성이 된다.
하지만 math 는 -1의 난수를 리턴하기 때문에 앞의 수의 범위는 8을 전달 해야만 0~7의 범위가 된다.
그러므로 앞의 수는 8을 전달하여 0~7의 범위가 되고 각 +2를 해줘야한다.
 
result += range == 8 ? 2 : 1;

range가 8이면(앞 숫자: 0~7범위) 2를 더하고 그게 아니면 9(뒷 숫자: 1~8범위) 1을 더해야 한다.

 

var question = getRandomInt(8) + "x" + getRandomInt(9);

사용자에게 문제내야할 question을 선언하여 문제 식을 넣어 준다.

 

var answer = eval(question);

정답을 구분하기위해서는 먼저 정답을 구해놓아야 하는데 문자열 안에 들어가있는 여러가지 수식을 계산해주는 함수인 eval()을 사용하여 앞에서 선언 하였던 question을 담아준다. 

 

document.write("<h3>" + (answer == myAnswer ? "정답" : "오답") + "</h3>");

산술(+), 삼항(==) 연산자가 있음으로 우선순위를 정해주기 위해 괄호를 써주어야 한다.

 

출력창

 

반응형