前言
分享一道面试中的数学题,希望给大家一些想法。
在面试算法工程师这个岗位的时候,往往到主管面,面试就会显得和之前有所不同。
比如我遇到的主管面,有聊天的,有上来做几道算法题结束的,也有和之前一样聊比赛,实习的,也有聊一个开放性问题的,让我印象深刻的还有一次上来抛给我一道数学题。
让我用公式推导的方式或者代码模拟。
作为程序员当然是用代码解决问题啦(当然也是数学知识有点记不清了)
题目
给与一个圆,在圆环上随机取3个点组成一个锐角三角形的概率是多少?
分析
我们需要去解决的无疑是以下几点
怎么用代码的形式来表示一个圆上的三个点
怎么用条件去判断这三个点所组成的圆是锐角的
需要想到的知识
三角函数中,我们常常采用2Π是代表360度,这里我们可以用单位圆上取点来表示这三个点
锐角三角形的三边a<b<c,则 a²+b²>c²
代码
import math
import random
ac_num = 0
count = 0
for i in range(100000):
pilist = [random.random()*2*math.pi for _ in range(3)]
x1, y1 = math.cos(pilist[0]), math.sin(pilist[0])
x2, y2 = math.cos(pilist[1]), math.sin(pilist[1])
x3, y3 = math.cos(pilist[2]), math.sin(pilist[2])
edge1 = (x1-x2)**2 + (y1-y2)**2
edge2 = (x3-x2)**2 + (y3-y2)**2
edge3 = (x1-x3)**2 + (y1-y3)**2
lists = sorted([edge1, edge2, edge3]) # 默认为升序
if lists[0] + lists[1] > lists[2]:
ac_num += 1
count += 1
print(ac_num/count)
模拟了10w次这个过程,结果逼近概率

其实就是 四分之一
你好,我是AI蜗牛车,我把自己比作蜗牛人生就像蜗牛一般,慢慢爬,往高处爬
保持谦逊,保持自律,保持进步
b站搜索“AI蜗牛车”,有惊喜哈!