- 소스 코드 (내가 푼 것)
<!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 |