数理统计 - 圆环上随机取3个点组成一个锐角三角形的概率
问题
在一个圆环上随机取3点,求这3个点组成一个锐角三角形的概率
题解
如下图所示:
取单位圆上任意不同两点A和B,A、B两点确定以后,点A、B、C三点要够成锐角三角形,点C必须在DE之间,否在将构成直角三角形(点C与点D或点E重合)或钝角三角形。设AB弧所对应的圆心角为\(\theta\),则当且仅当\(\theta \in (0, \pi)\) 时有可能构成锐角三角形。\(\theta\) 的概率密度是 \(\frac{1}{\pi}\),此时组成锐角三角形需要C点在AB对应的DE段间的概率是 \(\frac{\theta}{2\pi}\)。故在一个圆环上随机添加3点,三个点组成一个锐角三角形的概率为
\[\int_0^\pi \frac{1}{\pi}\cdot\frac{\theta}{2\pi}\mathrm{d}\theta = \frac{\theta ^ 2}{4\pi ^ 2}\bigg|_0^\pi = \frac{1}{4}\]
Python 代码模拟
#! /usr/bin/env python3
# -*- coding: utf-8 -*-# @Author: wzdnzdimport numpy as npdef simulate(n):# 圆心角θ所对应的弦长 l = 2 * R * sin(θ/2), R为圆的半径def compute(theta):if theta > np.pi:theta = 2 * np.pi - thetareturn 2 * np.sin(theta / 2)# 根据三角形三条边的平方关系判断是否是锐角、直角或钝角三角形def judge(array):if len(array) != 3:raise ValueError('len(array) must be 3.')if array[0] ** 2 + array[1] ** 2 > array[2] ** 2:return -1elif array[0] ** 2 + array[1] ** 2 == array[2] ** 2:return 0else:return 1acute, right, obtuse = 0, 0, 0for _ in range(n):angles = sorted(np.random.rand(3) * 2 * np.pi)chords = sorted([compute(angles[1] - angles[0]),compute(angles[2] - angles[1]), compute(2 * np.pi + angles[0] - angles[2])])flag = judge(chords)if flag == -1:acute += 1elif flag == 0:right += 1else:obtuse += 1return [x / n for x in [acute, right, obtuse]]if __name__ == "__main__":probabilities = simulate(100000)print('acute: {}\tright: {}\tobtuse: {}'.format(probabilities[0], probabilities[1], probabilities[2]))
运行结果如下:
acute: 0.25009 right: 0.0 obtuse: 0.74991
转载于:https://www.cnblogs.com/betabear/p/10807597.html
数理统计 - 圆环上随机取3个点组成一个锐角三角形的概率相关推荐
- vue中从数组中取一个随机颜色,随机取1到10的一个整数
data中定义数据 colorArr:[ " red ", " black " , " yellow ", " green &qu ...
- matlab:圆内均匀随机取点
文章目录 1.舍选法 2.反函数法 3.代码 这里介绍两种圆内均匀取点的方法:舍选法和反函数法. 1.舍选法 顾名思义,舍选法是指在正方形(边长等于圆直径)的上面均匀撒点,然后在正方形上画圆,超出圆形 ...
- 等概率随机取数算法的几种实现(洗牌算法)
等概率随机取数算法的几种实现 最近读了项目中的工具脚本,发现一个随机取数的函数,功能大概是从M个数中不重复的随机取出N个数,算是数组随机排序然后取前N个值的变种. 脚本实现采取原始的方法,每随机取一个 ...
- 算法题:一个圆环上有100个灯泡,灯泡有打开和关闭两种状态,灯泡的状态随机,按一个灯泡的开关,相邻的两个灯泡的状态也发生一次变化。比如暗-亮-暗,按中间灯泡,变化为亮-暗-亮。问设计一道算法,使得所有
算法题:一个圆环上有100个灯泡,灯泡有打开和关闭两种状态,灯泡的状态随机,按一个灯泡的开关,相邻的两个灯泡的状态也发生一次变化.比如暗-亮-暗,按中间灯泡,变化为亮-暗-亮.问设计一道算法,使得所有 ...
- 算法题:一个圆环上有100个灯泡,灯泡有打开关闭两种状态,灯泡状态随机。设计算法,使灯泡都亮。
算法题:一个圆环上有100个灯泡,灯泡有打开关闭两种状态,灯泡状态随机,按一个灯泡,相邻两个灯泡的状态也会改变. eg: ' 暗 - 亮 - 暗 ' 按中间灯泡 ,变化为 ' 亮 - 暗 - 亮 '. ...
- 3D视觉识别案例:3D无序棒料抓取,阀体圆环上下料,电机定子上料
3D无序棒料抓取 某知名汽车行业 项目背景 长春某知名汽车行业,需求3D视觉实现圆形棒材的上料自动化. 作业流程 钢棒依次经过剪切/锯切下料,从深筐中抓取,先放置在V型二次定位平台上,再从平台抓到输送 ...
- spring 数组中随机取几个_游戏编程中需要掌握哪些数学物理知识
一. 相似三角形知识的应用 在摇杆控制物体运动的游戏中,摇杆的手柄(下图黄色圆饼),不能移出摇杆所在的套(下图灰色圆环),也就是说摇杆偏离中心点的最大距离为max_R.一旦触摸移动过程中移动的点超出此 ...
- 利用边缘灰度变化建模,来提高圆环直径求取精度
简 介: 利用对所获得的圆环边缘亮度平均变化曲线,利用Sigmoid函数进行建模逼近,可以对原来经由HoughCircle所获得的半径进行补偿.对于利用扫描仪所获得的图片进行实际处理,可以看到它可以获 ...
- mysql快速随机_MySQL随机取数据最高效的方法
mysql随机取数据最高效率的方法 发现在SQL语句里有一个 ORDER BY rand() 这样的一个语句,这个说是用着方便,但是效率实在是太低了,于是我用了以下的方法来优化,就是用JOIN表的方法 ...
最新文章
- win10无法连接到Windows(SENS)服务网络连不上怎么办
- 兰州大学计算机考研专硕学费,2018年兰州大学在职硕士研究生学费标准
- 岗位推荐 | 阿里巴巴达摩院招聘自然语言处理、机器翻译算法专家
- 基于InkCanvas实现的桌面涂鸦工具-[ WPF开发 ]
- 在一个数组中删除另一个数组存在的值
- 国家开放大学2021春1129土木工程力学(本)题目
- CSliderCtrl(滑块)控件
- CentOS 7.6虚拟机ping: www.baidu.com: Name or service not known
- 微型计算机三部分基本组成,微型计算机的基本组成-电脑自学网
- Excel2013制作甘特图
- 001-三阶魔方-概述及层先法
- 语音转文字软件哪个好,这三款值得收藏
- 上传图片校验图片类型、大小及尺寸
- 10分钟制作UWP汉堡菜单
- NLifeBill第四章添加页面
- android Qwerty 键盘搜索联系人分析与实现(支持多音字)
- 小a与星际探索 线性基算法
- Python:设置不显示Using TensorFlow backend及FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of typ
- 如何在Photoshop中为黑白老式照片着色
- ORACLE EBS WORKFLOW实现多附件下载