数理统计 - 圆环上随机取3个点组成一个锐角三角形的概率
生活随笔
收集整理的這篇文章主要介紹了
数理统计 - 圆环上随机取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}\mathrmze8trgl8bvbq\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个点组成一个锐角三角形的概率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 锐龙R3 4300U和i5-9300H
- 下一篇: 【测试沉思录】17. 性能测试中的系统资