zoukankan      html  css  js  c++  java
  • 用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), "")
    ~                                                  

    个人实现, 不知道对不对

  • 相关阅读:
    Servlet和Filter的url匹配
    iterator的用法
    python学习笔记
    python的序列之列表
    java开发实战学习笔记3
    java学习笔记4
    Java Java集合
    Struts2中的几个符号
    DbHelper.cs
    做word,excel时需要引用com
  • 原文地址:https://www.cnblogs.com/x931890193/p/9521236.html
Copyright © 2011-2022 走看看