近日人力咨詢一個(gè)投票的問(wèn)題:21個(gè)評(píng)委從30個(gè)候選人選出近20個(gè)名額。選舉規(guī)則是每個(gè)評(píng)委選有20票,30個(gè)候選人按照得票數(shù)排序,選取超過(guò)額度票數(shù) 的前20個(gè)人。如何選擇額定票數(shù),既能起門檻的作用,阻擋得票數(shù)過(guò)低的人通過(guò),又要允許20左右的個(gè)人通過(guò),避免出現(xiàn)只有幾個(gè)人通過(guò)的尷尬情況。
這是個(gè)概率問(wèn)題,需要計(jì)算至少20個(gè)人得票數(shù)都大于額定票數(shù)(記為e)的概率(記為p),它和額定票數(shù)有反向關(guān)系。在選定一個(gè)較大概率如0.95,則問(wèn)題表述為求max{e|p>=0.95}。
直接推導(dǎo)p關(guān)于e的表達(dá)式較為困難,但可以采取數(shù)值實(shí)驗(yàn)的近似計(jì)算其數(shù)值。如模擬10000次投票,統(tǒng)計(jì)至少有20個(gè)人的得票數(shù)超過(guò)額定票數(shù)e的次數(shù),再計(jì)算其頻率,就可以分析出最佳額定票數(shù)。
附件代碼中有兩個(gè)程序,vote.exe和analyse.exe,前者模擬多次投票,后者分析e和p的數(shù)值。
> vote.exe 30 20 21 10000 > 1.txt
> analyse.exe 20 12 13 14 15 < 1.txt
第一條指令,模擬10000次投票,并將數(shù)據(jù)存放在1.txt中,第二條指令,則分析1.txt的數(shù)據(jù),計(jì)算超過(guò)20人的得票數(shù)超過(guò)12 13 14 15的頻率是多少。也可以合并為:
> vote.exe 30 20 21 10000 | analyse.exe 20 12 13 14 15
運(yùn)行結(jié)果為:
1.000,0.984,0.176,0.000,
從本次計(jì)算的結(jié)果看,13票為較好的額定票數(shù)。
上述計(jì)算是假設(shè)30個(gè)候選人的實(shí)力相同,被選中的可能性相同。如果有熱門候選人情況就不同,如有5個(gè)人的被選中的概率比其他人高2倍,則運(yùn)行結(jié)果為:
13票則不是好的結(jié)果。
問(wèn)題沒(méi)有解決,但本文在此作結(jié)。