def d_Hondt(p, n):
r = [[0 for i in range(n)] for i in range(len(p))]
num_p = len(p)
for i in range(num_p):
for j in range(0, n):
r[i][j] = p[i] / (j + 1)
a = np.array((r))
b = a.flatten()
T = sorted(list(b), reverse=True)
min = T[n]
R1 = [0 for i in range(num_p)]
for i in range(num_p):
for j in range(0, n):
if r[i][j] > min: R1[i] = R1[i] + 1
rest = n - sum(R1)
k = 0
for i in range(num_p):
if k >= rest: break
for j in range(n):
if r[i][j] == min:
R1[i] += 1
k += 1
break
print('d\'Hondt法' + str(R1))
示例:
l=[30,20,10]
d_Hondt(l,10)
结果