본문 바로가기

자바 스크립트/연습 문제

[자바 스크립트] 대수의 법칙 증명하기

- 소스 코드 (내가 푼 것)

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>대수의 법칙</title>
    <script>
        var input = 0;
        var dice = 0;
        var diceNum = [0, 0, 0, 0, 0, 0];

        function play() {
            input = prompt("주사위를 몇 번 굴리시겠습니까?");
            input = Number(input);

            rollDice(input);

            showResult();
        }

        function rollDice(num) {
            for (var i = 0; i < num; i++) {
                dice = Math.floor(Math.random() * 6) + 1;

                for (var j = 1; j <= 6; j++) {
                    if (dice == j) {
                        diceNum[j - 1]++;
                    }
                }
            }
        }

        function showResult() {
            document.write("<h1>결과</h1>");

            var str = "<table border='1'><th>눈금</th><th>횟수</th><th>확률</th>";
            var count = 1;

            for (var i = 1; i <= 6; i++) {
                str += "<tr>";

                // 눈금
                str += "<td>";
                str += i;
                str += "</td>";

                // 횟수
                str += "<td>";
                str += diceNum[i - 1];
                str += "</td>";

                // 확률
                str += "<td>";
                str += (diceNum[i - 1] / input) * 100 + "%";
                str += "</td>";

                str += "</tr>";
            }

            str += "</table>";

            document.write(str);
        }
    </script>
</head>

<body>
    <button type="button" onclick="play()"><img src="images/dice.png" alt=""></button>
</body>

</html>

 

- 실행 결과

 

- 실행 영상

https://www.youtube.com/watch?v=AJULJtOXVjE

 

- 소스 코드 (선생님이 풀어주신 것)

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>index</title>

    <script>
        var count = prompt("시행 횟수 입력");
        var num = 0;
        var dice = [0, 0, 0, 0, 0, 0, 0];
        var dice_per = [0, 0, 0, 0, 0, 0, 0];

        for (var i = 1; i <= count; i++) {
            num = Math.floor(Math.random() * 6) + 1;
            // 0.00006 ~ 5.99999
            // 0 ~ 5
            // 1 ~ 6

            dice[num]++;
        }

        for (var i = 1; i <= 6; i++)
        {
            dice_per[i] = (dice[i]/count) * 100;
        }

        for (var i = 1; i <= 6; i++)
        {
            document.write(i + "의 횟수 : " + dice[i] + " / 확률 : " + dice_per[i].toFixed(2) + "%", "<br>");
        }
    </script>
</head>

<body>
</body>

</html>

반복문을 중첩으로 돌리는 것보다 아예 배열을 1칸 더 할당하는 효율적인 방법을 사용했다.

'자바 스크립트 > 연습 문제' 카테고리의 다른 글

[연습 문제] 함수  (0) 2020.05.15
[연습 문제] 중첩 반복문 2  (0) 2020.05.12
[연습 문제] 중첩 반복문 1  (0) 2020.05.12
[연습 문제] 반복문 응용  (0) 2020.05.11
[연습 문제] for  (0) 2020.05.08