JavaScript

[FrontEnd2] JS 연습문제 (대수의 법칙 _ 주사위)

보라해바라기 2022. 6. 5. 11:37
SMALL

안녕하세요:) 보라해바라기입니다~

 

오늘은 대수의 법칙 중 하나인 주사위 확률 구하기!를 각 단계별로 develop 해보았습니다.

 

연습문제를 풀기 전, 대수의 법칙에 대한 간단한 설명을 하나 적고 시작해보겠습니다.


 

* 대수의 법칙

모집단이 커질수록 통계적으로 증명된 확률 값과 가까워진다는 통계 법칙

 

예를 들어, 각 주사위의 수가 나올 확률은 통계적으로 16.666....%인데

 

시행 횟수를 늘릴수록 16.666...%와 가까운 값이 도출됩니다!

 


 

1. 랜덤함수를 이용해 6번 주사위 굴리기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        for(var i = 1; i <= 6 ; i++) {
            var num = Math.ceil(Math.random()*6)
            document.write("주사위 값: " + num, "<br>")
        }
    </script>
</head>
<body>
    
</body>
</html>

 

2. 랜덤함수를 생성한 값을 배열에 저장하고 출력

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var dice_arr = [0, 0, 0, 0, 0, 0, 0] // 0번째 자리는 비우고 1번째부터 시작!
        for (var i = 1 ; i <= 6 ; i++) {
            var num = Math.ceil(Math.random()*6)
            dice_arr[num]++
        }
        for (var i = 1 ; i <= 6 ; i++) {
            document.write("주사위 숫자 " + i + ": " + dice_arr[i] + "회", "<br>")
        }

    </script>
</head>
<body>
    
</body>
</html>

 

3. 배열에 저장된 랜덤값을 확률로 계산

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var dice_arr = [0, 0, 0, 0, 0, 0, 0] 
        for (var i = 1 ; i <= 6 ; i++) {
            var num = Math.ceil(Math.random()*6)
            dice_arr[num]++
        }
        for (var i = 1 ; i <= 6 ; i++) {
            document.write("주사위 숫자 " + i + ": " + dice_arr[i] + "회,  ")
            var percent = (dice_arr[i]/6)*100
            // **toFixied ~ 특정소수점에서 반올림
            document.write("확률: " + percent.toFixed(2) + "%" , "<br>")
        }
    </script>
</head>
<body>
    
</body>
</html>

 

4. 주사위 시행 횟수가 100번일 때, 확률 계산

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var dice_arr = [0, 0, 0, 0, 0, 0, 0] 
        for (var i = 1 ; i <= 100 ; i++) {
            var num = Math.ceil(Math.random()*6)
            dice_arr[num]++
        }
        for (var i = 1 ; i <= 6 ; i++) {
            document.write("주사위 숫자 " + i + ": " + dice_arr[i] + "회,  ")
            var percent = (dice_arr[i]/100)*100
            // **toFixied ~ 특정소수점에서 반올림
            document.write("확률: " + percent.toFixed(2) + "%" , "<br>")
        }
    </script>
</head>
<body>
    
</body>
</html>

 

5. 사용자에게 시행 횟수를 입력받아 그에 따른 확률 계산

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var dice_arr = [0, 0, 0, 0, 0, 0, 0] 
        var repeat = parseInt(prompt("시행 횟수 입력"))

        for (var i = 1 ; i <= repeat ; i++) {
            var num = Math.ceil(Math.random()*6)
            dice_arr[num]++
        }
        for (var i = 1 ; i <= 6 ; i++) {
            document.write("주사위 숫자 " + i + ": " + dice_arr[i] + "회,  ")
            var percent = (dice_arr[i]/repeat)*100
            // **toFixied ~ 특정소수점에서 반올림
            document.write("확률: " + percent.toFixed(2) + "%" , "<br>")
        }
    </script>
</head>
<body>
    
</body>
</html>

시행횟수가 1000회 일 때
시행횟수가 10000회 일 때
시행횟수가 100000회 일 때

728x90