ドント方式

政党0,1,2,3がそれぞれ1000,650,200,150票を得た。10人当選させるには,各政党から何人ずつ選べばよいか。

r = 10  # 当選数
n = a = np.array([1000, 650, 200, 150]) # 得票数
for i in range(2, r + 1):
    a = np.append(a, n / i)

a

この上位 r 人を選べばよい。

o = np.argsort(-a)
np.bincount((o % 4)[:r])

なお,タイがない(a[o][r-1]a[o][r] が等しくない)ことも確認しなければならない。


Last modified: