用python實現按權重對N個數據進行選擇


需求:某公司有N個人,根據每個人的貢獻不同,按貢獻值給每個人賦予一個權重。設計一種算法實現公平的抽獎。

 

需求分析:按照權重對數據進行選擇。

 

代碼實現:

  1 def fun(n,p):
  2     """
  3     n 人的編號
  4     p 每個人的權重
  5     """
  6     my_dict = {}
  7     my_sum = 0.0
  8     for i in range(100):
  9         my_dict[i] = [my_sum, my_sum +  p[i]]
 10         my_sum += p[i]
 11     # 隨機產生浮點數,表示中獎
 12     bingo = random.random()
 13     for j in range(100):
 14         print(bingo, my_dict[j])
 15         if my_dict[j][0]< bingo < my_dict[j][1]:
 16             return j
 17 if __name__ == "__main__":
 18     import random
 19     n = [i for i in range(1,101)]
 20     # 隨機100 個浮點數 
 21     p1 = [random.random() for _ in range(100)]
 22     print(len(p1))
 23     # 二次轉換,保證和為1 排序,假設概率從小到大,與人一一對應
 24     p2 = list(sorted([i/sum(p1) for i in p1 ]))
 25     print("概率和:", sum(p2))
 26     print("抽中的是:", fun(n, p2), "")
~                                                  

個人實現, 不知道對不對

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM