【文字版】面试大厂,面试官竟然出了一道初中数学题?

前言

分享一道面试中的数学题,希望给大家一些想法。

在面试算法工程师这个岗位的时候,往往到主管面,面试就会显得和之前有所不同。

比如我遇到的主管面,有聊天的,有上来做几道算法题结束的,也有和之前一样聊比赛,实习的,也有聊一个开放性问题的,让我印象深刻的还有一次上来抛给我一道数学题。

让我用公式推导的方式或者代码模拟。

作为程序员当然是用代码解决问题啦(当然也是数学知识有点记不清了)

题目

给与一个圆,在圆环上随机取3个点组成一个锐角三角形的概率是多少?

分析

我们需要去解决的无疑是以下几点

  1. 怎么用代码的形式来表示一个圆上的三个点

  2. 怎么用条件去判断这三个点所组成的圆是锐角的

需要想到的知识

  • 三角函数中,我们常常采用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次这个过程,结果逼近概率

afcc4b34686efb4368ff10ce0bd5671f.png

其实就是 四分之一


你好,我是AI蜗牛车,我把自己比作蜗牛人生就像蜗牛一般,慢慢爬,往高处爬

保持谦逊,保持自律,保持进步

b站搜索“AI蜗牛车”,有惊喜哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值