[做初中数学题做到打起来了]跟同事为了他小孩的数学题杠上了

简介: 4只小鸭子在一个大的圆形水池中,分别随机的出现在圆圈中的任意一点。4只鸭子出现在同一个半圆内的概率是多少?本文将带领大家使用蒙特卡洛方法求解此题。

CSDN

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:[做初中数学题做到打起来了]跟同事为了他小孩的数学题杠上了

1.前情提要

这是2019年 NGA 论坛上的一个帖子:
题目

帖子中提出了一个问题:4只小鸭子在一个大的圆形水池中,分别随机的出现在圆圈中的任意一点。4只鸭子出现在同一个半圆内的概率是多少?

这个问题当时分歧很大,各种答案都有,笔者当时看的也是一头雾水。

好在笔者现在学会了如何使用21世纪最先进的计算工具1来进行计算,本文笔者将使用蒙特卡洛方法2来解决本题。


2.蒙特卡洛方法

蒙特卡洛方法解此题的思路为:每次在圆周上生成4只鸭子,统计 4只鸭子在同一半圆的次数与总次数的比例,即为4只鸭子出现在同一个半圆内的近似概率。

而是否在同一半圆则可以通过判断每只鸭子扫过半圆是否经过另外3只鸭子来判断。

所以我们可以得到以下代码:

代码

import numpy as np
from matplotlib import pyplot as plt

x = list(range(1, 10000))
y = []
for i in x:
    temp = 0
    for j in range(i):
        duck = np.sort(np.random.random((4)))
        temp += duck[0] + 0.5 > duck[3] or duck[1] - 0.5 > duck[0] \
            or duck[2] - 0.5 > duck[1] or duck[3] - 0.5 > duck[2]
    y.append(temp/i)

plt.plot(x, y)
plt.show()
通过增加随机次数,我们可以看到概率逐渐收敛到 $\frac{1}{2}$ :

概率估计图

理解起来有多种思路,这里我采用了我认为最好理解的一种:

  • 4只鸭子在水池中时,至少有3只会处于同一半圆3
  • 这时4只鸭子出现在同一个半圆内的概率完全取决于最后那只鸭子。

3.尾声

本题本质上还是个数学问题,可以通过微积分进行求解。

但是现实中,4只鸭子出现在同一个半圆内的概率则不大可能是 $\frac{1}{2}$。

毕竟鸭子是集群动物,4只鸭子在一起应该是常态,那么它们是否处于同一半圆则主要取决于水池的大小了。

你们认为本题的答案是多少呢?欢迎在评论区留言。


  1. 指计算机。
  2. 参见:https://blog.csdn.net/qq_63585949/article/details/126444753
  3. 不一定是前3只,是4只中的任意3只。
目录
相关文章
|
存储 PyTorch 算法框架/工具
PyTorch 中的 Tensor:属性、数据生成和基本操作
PyTorch 中的 Tensor:属性、数据生成和基本操作
545 0
|
算法 程序员 应用服务中间件
推荐一款基于docker部署的个人免费笔记工具wiznote
推荐一款基于docker部署的个人免费笔记工具wiznote
推荐一款基于docker部署的个人免费笔记工具wiznote
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
903 60
|
Python
matplotlib绘制雷达图之基本配置——万能模板案例
matplotlib绘制雷达图之基本配置——万能模板案例
1906 0
matplotlib绘制雷达图之基本配置——万能模板案例
ly~
|
网络协议 应用服务中间件 Apache
如何在 DNS 记录中设置反向代理服务器?
要设置反向代理服务器,首先需安装配置软件(如 Nginx 或 Apache),并确保域名正确指向服务器 IP。接着,在 DNS 中设置 A 或 CNAME 记录,将域名指向反向代理服务器。然后编辑 Nginx 或 Apache 的配置文件,将请求转发至后端服务器。最后,通过浏览器访问域名测试配置是否成功,并使用工具检查请求流向和响应情况。
ly~
1695 3
|
机器学习/深度学习 人工智能 测试技术
探索AI在软件开发中的应用:提升效率与创新
【10月更文挑战第25天】本文探讨了AI在软件开发中的应用,包括自动化测试、代码生成与优化、智能项目管理等方面,介绍了TensorFlow、PyTorch和GitHub Copilot等实用工具,展望了AI在未来的潜力,并强调了AI对提升开发效率和创新能力的重要性。
|
Android开发
Android源代码定制:Overlay目录定制|调试Overlay资源是否生效
Android源代码定制:Overlay目录定制|调试Overlay资源是否生效
1812 0
|
Java 编译器 关系型数据库
深入理解 Java 中的 final 关键字
final 是 Java 中重要关键字之一,可以应用于类、方法以及变量上。这篇文章中将讲解什么是 final 关键字?将变量、方法和类声明为 final 代表了什么?使用 final 的好处是什么? final 关键字是什么? final 在 Java 中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。
4894 0
|
存储 算法 搜索推荐
C++归并排序的实现
C++归并排序的实现
279 0

热门文章

最新文章