<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>随机摸球概率</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<!-- 显示当前第一次摸到红球的概率 -->
<span id="box"></span><br/>
<!-- 显示当前执行花费的时间 -->
<span id="time"></span>
<script>
// 摸到红球的次数
var prob = 0;
// 产生最小值与最大值之间的随机数
function randomNumber(min, max) {
var diff = max - min;
var rand = Math.random();
var num = min + Math.round(rand * diff);
return num;
}
// 定义一个开始时间
var startTime = new Date();
// 执行一万次
for(var i = 0; i < 10000; i++) {
// 匿名函数,在for循环里面才能立即执行
(function(i) {
// 延迟执行
setTimeout(function() {
// 盒子的索引,随机从三个盒子中挑选一个盒子
var boxIndex = randomNumber(1, 3);
// 盒子中球的索引,随机从盒子中摸一个球
var bollIndex = 0;
// 如果是第一个盒子
if(1 == boxIndex) {
prob += 1;
}
// 如果是第二个盒子
else if(2 == boxIndex) {
// 随机摸取一个球
bollIndex = randomNumber(1, 2);
// 如果为红球
if(1 == bollIndex) {
prob += 1;
// 如果为蓝球
} else if(2 == bollIndex) {
// 没有红球
}
}
// 如果是第三个盒子
else if(3 == boxIndex) {
// 没有红球
}
// 将产生的概率显示到页面
// 概率=第一次摸红球的次数 / 摸球次数,取小数点后五位
$("#box").text("概率:" + parseFloat(parseInt(prob) / (i + 1)).toFixed(5));
// 结束时间
var endTime = new Date();
// 耗时显示
$("#time").text("耗时:" + (parseInt(endTime - startTime) / 1000).toFixed(2) + "秒");
// 延迟时间,(i+1)*1000,表示每次延迟1秒执行
}, (i + 1) * 1);
})(i)
};
</script>
</body>
</html>