(蒙特卡洛方法)求任意一点(X,Y)落在心形区域的概率(2017阿里在线编程题)
2017-10-15 23:09
549 查看
这个题首先2和3看不清坑了很多人,应该是3次方而不是2次方
真是看瞎了自己的钛合金狗眼啊 = =
不多说,上高清大图:
看到这个题目,第一反应就是蒙特卡洛方法,现在来介绍一下什么是蒙特卡洛方法,其实很简单的定义,即:
当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。
通俗点说就是,这个概率我用数学方法求不出来了,我用计算机程序暴力模拟,用模拟结果中该事件发生的频率除以模拟的总次数来估计该事件的概率。
举个例子,我要求抛硬币正面朝上的概率,我就丢了1000000次硬币,其中正面朝上的次数大概有500000次,所以正面朝上的概率为50%.
这就是所谓的蒙特卡洛方法。
回到正题:
题目要求一横纵坐标都服从正态分布的点落入心形区域的概率,于是可以使用python程序模拟题中的事件,生成100万个符合题设要求的点,看有多少个点落入心形区域,最后用落入区域点的数量m/1000000即是估计出的所求的概率。
此处用标准正态分布为例:
输出结果如下:
于是得到一个横纵坐标都服从标准正态分布的点落入心形区域的概率大概为42.4%
真是看瞎了自己的钛合金狗眼啊 = =
不多说,上高清大图:
看到这个题目,第一反应就是蒙特卡洛方法,现在来介绍一下什么是蒙特卡洛方法,其实很简单的定义,即:
当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。
通俗点说就是,这个概率我用数学方法求不出来了,我用计算机程序暴力模拟,用模拟结果中该事件发生的频率除以模拟的总次数来估计该事件的概率。
举个例子,我要求抛硬币正面朝上的概率,我就丢了1000000次硬币,其中正面朝上的次数大概有500000次,所以正面朝上的概率为50%.
这就是所谓的蒙特卡洛方法。
回到正题:
题目要求一横纵坐标都服从正态分布的点落入心形区域的概率,于是可以使用python程序模拟题中的事件,生成100万个符合题设要求的点,看有多少个点落入心形区域,最后用落入区域点的数量m/1000000即是估计出的所求的概率。
此处用标准正态分布为例:
import numpy as np sum = 0#用于统计落入心形区域中的点的频率 for i in range(1000000):#模拟100万次 x=np.random.randn() y=np.random.randn() if (x**2 + y**2 - 1)**3 - (x**2)*(y**3) < 0:#落入心形区域中的点都会满足该不等式 sum = sum + 1 print sum print float(sum)/1000000
输出结果如下:
于是得到一个横纵坐标都服从标准正态分布的点落入心形区域的概率大概为42.4%
相关文章推荐
- 某公司2017秋季招聘在线编程题(求圆上n个点任意两点之间最大距离)
- 阿里笔试题(2017在线编程题)-- 数串分组 --Java实现
- 2017阿里实习生在线编程题
- 阿里笔试题(2017在线编程题)-- 数串分组
- 2017阿里秋招内推在线编程题解法
- 【阿里聚安全·安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone
- 2017阿里实习生招聘考试编程题
- 京东2017实习生招聘在线笔试编程题
- 2017阿里实习生招聘编程题之墓室
- 2018年春季阿里前端工程师实习岗在线测评编程题总结
- 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码
- 对某里求点落入爱心曲线内概率在线编程题的思考
- 【阿里聚安全·安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone
- 阿里算法工程师在线编程题
- 阿里内推在线编程题(返回元素的选择器)
- 阿里巴巴2017校招C++岗位在线编程题-RNA嵌套
- 阿里在线笔试题 折半方法求最接近sum值
- 2017校招去哪网,阿里,网易,中兴,华为笔试编程题五则(Python描述)
- 用数学方法解决工程问题系列(三) 判断任意给定一点是否在多边形内
- vim的自动排版,剪切与拷贝任意区域方法