# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 12 13:54:22 2019
@author: mikey
"""
import numpy as np
def count_name():
count = {}
count['Bill'] = 10
count['Jane'] = 15
count['Charlle'] = 18
count['Mary'] = 17
value_list = sorted(list(count.items()), key=lambda x:x[1], reverse=True)
print(value_list)
se = 0
vlist=[]
for e in value_list:
vlist.append(list(e))
se += e[1]
c = 0.5* float(se)
print(vlist)
#c=0.5*float(np.sum(value_list[1]))
while(1):
#排序#
print("\n一輪開始:競選者的新票數-origin")
print(vlist)
print("競選者的票數-排序後")
vlist = sorted(vlist, key=lambda x:x[1], reverse=True)
#value_list.sort(reverse=True)
print(vlist)
number_of_list=len(vlist)
minv = vlist[-1][1]
if float(vlist[0][1])>c:
#print(count[0]+" is winner")
print("winner " + str(vlist[0][0]) + " has " + str(vlist[0][1]) + " votes")
break
else:
del vlist[-1]
print("競選者的票數-去掉最低")
print(vlist)
number_of_list=len(vlist)
print(number_of_list)
y=np.random.randint(minv, size=number_of_list)
v={}
ratio = minv / sum(y)
for i in range(len(y)):
v[i] = int(y[i]*ratio)
vl = list(v.values())
##隨機產生一個序號,將差值加給這個人
idx=np.random.randint(number_of_list)
v[idx] = v[idx] + (minv-int(np.sum(vl)))
#v則爲隨機產生的序列,序列之和爲淘汰那位的票數
print("淘汰者的票數產生的隨機數")
print(v)
#將隨機產生的序列加到原來的序列中
print(type(vlist[0][0]))
for i in range(len(vlist)):
vlist[i][1] += v[i]
count_name()
進行投票選舉時,如果投票者手中有多票的時候,該怎麼統計票數呢?