JavaScript中实现摸球概率统计事件

简介: 在三个不透明的盒子中分别每个盒子装了两个球,第一个盒子装2个红球,第二个盒子装1个红球和1个蓝球,第三个盒子装2个蓝球,问:随机从三个盒子中取出一个球,问这个球是红球的概率?

  • 事件描述:在三个不透明的盒子中分别每个盒子装了两个球,第一个盒子装2个红球,第二个盒子装1个红球和1个蓝球,第三个盒子装2个蓝球,问:随机从三个盒子中取出一个球,问这个球是红球的概率?
  • 我使用JS代码来描述这个事件,请看代码:
<!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>
  • 我们看运行过程:

  • 最终运行结果:

  • 执行一万次后,统计概率接近于:1/2
目录
相关文章
|
3月前
|
Web App开发 JavaScript 前端开发
javascript onkeydown事件
javascript onkeydown事件
|
5月前
|
JavaScript 前端开发
js事件队列
js事件队列
146 55
|
3月前
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
46 3
|
4月前
|
JavaScript 前端开发
JavaScript 事件
JavaScript 事件
42 2
|
5月前
|
JavaScript 前端开发
JavaScript 事件的绑定
JavaScript 事件的绑定
52 0
|
2月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
55 5
|
3月前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
58 6
|
4月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
29 5
|
4月前
|
监控 JavaScript 前端开发
|
3月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
179 0