趣味概率问题:脑洞蒙特卡洛模型,来招聘!!!
在微信公眾號(hào)中看到一個(gè)很有趣的題目:
假如你是一名人事經(jīng)理,你要招聘一名數(shù)據(jù)分析師,目前有100名面試者,你該如何抉擇?
應(yīng)聘流程:
這100人隨機(jī)排序,逐一面試,每當(dāng)一位候選人面試完后,要么錄用,要么不選。如果選擇了他,不再考慮后面的人。你必須從中選擇一人,如果前99都看不中,必須選擇最后一人。那么你怎么保證自己最高概率錄取到能力最強(qiáng)的人
歐拉數(shù):e
e^{i\pi}+1=0,含義是單位時(shí)間內(nèi),持續(xù)翻倍增長(zhǎng)所能達(dá)到的極限值。如何理解?
比如:一個(gè)細(xì)胞單位時(shí)間24h可以分裂一次,那么24h后:
(1+1)^1=2
如果12h分裂一次,那么24h后:
(1+1/2)^2=2.25
如果24/n h內(nèi)分裂一次,那么24h后:
(1+1/n)^n \to e
我們的問(wèn)題答案就是100/e=37 ,pass掉前37人,從第38人開(kāi)始選擇大于前37人能力的第一個(gè)人作為錄取者。
37%法則,我們通過(guò)實(shí)驗(yàn)來(lái)證明一下:我們選擇100個(gè)應(yīng)聘者,編號(hào)1-100。隨機(jī)打亂順序,按照37%法則選取,程序運(yùn)行1w次后,我們看看結(jié)果。
#100個(gè)人招聘能力最好的人,怎么保證最大概率找到最合適的人才,只選一人,一旦選擇不考慮其他,如一直不選擇,選最后一位。import random #mport numpy as np #import itertools #import math import matplotlib.pyplot as plt from collections import defaultdictnumber = 100 n=100000 def generate(n):dict=defaultdict()L=[j for j in range(1,number+1)]for i in range(n):random.shuffle(L)mid=int(number*0.37)L_left=L[:mid]L_right=L[mid:]best_out=max(L_left)choose = choose1(best_out,L_right)if choose in dict:dict[choose]=dict[choose]+1else:dict[choose]=1return dictdef choose1(best_out,List_right):m=len(List_right)for i in range(m):if List_right[i]>best_out:choose=List_right[i]return choosechoose=List_right[-1]return choosedict=generate(n) dict x=[int(i) for i,_ in dict.items() ] y=[float(i/n) for _,i in dict.items() ] #print(x) #print(y)plt.scatter(x,y,color='r')plt.show()圖中X坐標(biāo)表示最后錄取者的能力值,Y表示在1w次中所占比重,我們可以看到有接近40%的時(shí)候會(huì)選到最好的候選人,說(shuō)明37%準(zhǔn)則是比較準(zhǔn)確的。
總結(jié)
以上是生活随笔為你收集整理的趣味概率问题:脑洞蒙特卡洛模型,来招聘!!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: diff git 代码实现_Git比对文
- 下一篇: VGG-16网络结构详解