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

it2022-05-05  119

事件描述:在三个不透明的盒子中分别每个盒子装了两个球,第一个盒子装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

如您在阅读中发现不足,欢迎留言!!!

Asurplus、 认证博客专家 博客专家 全栈开发 书山有路勤为径,学海无涯苦作舟!

最新回复(0)