1 随机抽奖

本次运行环境为:

  • win7

  • jupyter notebook

  • python 3.6

1.1 随机抽取一个元素

用 random.choice() 来实现随机抽取一个元素。

from random import choiceimport randomimport pandas as pdname = ['张三', '李四', '王五', '小明', '小郑', '梅西', 'C罗', '内少']random_name = choice(name)random_name

1.2 随机抽取多个元素

可以考虑用 random.sample() 来随机抽取多个元素。

# 从name中随机选择3个元素slice_sample = random.sample(name, 3)slice_sample

1.3 考虑权重后随机抽取一个元素

如果是不同的成员有不同的权重,比如本次抽奖,在赞赏的同时有评论的人员,赋予的权重要求稍微高一些。可以自定义一个函数,用来考虑权重后随机抽取一个元素。

# weight_data 的数据类型为 dictdef random_weight(weight_data):    total = sum(weight_data.values())    # 权重求和    ra = random.uniform(0, total)   # 在0与权重和之前获取一个随机数    curr_sum = 0    ret = None#     keys = weight_data.iterkeys()    # 使用Python2.x中的iterkeys    keys = weight_data.keys()        # 使用Python3.x中的keys    for k in keys:        curr_sum += weight_data[k]             # 在遍历中,累加当前权重值        if ra <= curr_sum:          # 当随机数<=当前权重和时,返回权重key            ret = k            break    return ret# 用Pandas从excel中读取数据df = pd.read_excel('choujiang.xlsx')# 将数据进行整理df_data = df[['name', 'weight']].set_index('name')# 根据上面的上述,获取dict类型的数据data = df_data.to_dict()['weight']random_weight(data)

1.4 考虑权重后,随机获取多个元素

最终,本次需要在考虑权重后,随机获取多个元素(N个),并且不能重复,可以在上个函数的基础上,再添加一个自定义函数,来一次性加权随机抽取多个元素。

def choujiang(data, N):#     N = 6    results = []    i = 0    while i < N:        m = random_weight(data)        if m in results:            continue        results.append(m)        i = i+1    return resultschoujiang(data,3)


---------------- End ----------------


点击前往【项目实战】

世界杯系列 | 福布斯系列 | 求职系列


知识星球

我的知识星球【Python数据之道成长圈】已开通,想加入的同学,请回复数字 “2” 了解详情。



©著作权归作者所有:来自51CTO博客作者mb5fe18e7c44408的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Python办公自动化|光速对比并提取两份Word/Excel中的不同元素
  2. 动画: 快速排序 | 如何求第 K 大元素?
  3. php获取数组中最后一个元素的方法
  4. php实现获取数组中相同/不相同的元素
  5. 为什么推荐使用for-each而不是for循环遍历元素?
  6. 群统计v0.9: 特殊权重票,现场活动投票利器
  7. Selenium3自动化测试【12】元素定位认知
  8. Jquery对选取到的元素显示指定的长度,对于的字符串用“...”显示
  9. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元

随机推荐

  1. JDBC 性能小贴
  2. 996我没觉得有啥毛病啊
  3. Spring AOP就是这么简单啦
  4. 你的接口,真的能承受高并发吗?
  5. 面试常问,你看源码学到了什么?
  6. 推荐给初级 Java 程序员的 3 本进阶书
  7. 构造模式实践
  8. 原理暂且不谈,定时器你当真会用?
  9. 编码不规范,同事真的会两行泪?
  10. 面试官问我,SpringApplication.run做了哪