谁去开会?
来源:互联网 发布:淘宝怎样提升信誉 编辑:程序博客网 时间:2024/06/05 13:22
本系列文章由 @yhl_leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/50912208
学院要召开第xxx届研究生学生代表大会,各个班级需要选举出代表。对于各班的代表基本要求,巴拉巴拉一大堆,这里就不列举了,其中有一条数量规定是这样:
班委、党支部委员和团支部委员选出代表4名,其他班级成员代表6名。
我们来使用python随机方法选举产生,首先,指定班干部以及班级成员名单(这里都用代号):
# python3# 班委class_committees = ['A', 'D', 'E', 'K', 'N', 'V', 'W', 'Z']# 所有班级成员class_member_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
没有其他任何多余约定的情况下,当然可以直接随机选举,random
模块可以轻松解决:
import randomCOUNT_COMMITTEES = 4COUNT_COMMON_MEMBER = 6print(random.sample(set(class_committees), COUNT_COMMITTEES))print(random.sample(set(class_member_list) - set(class_committees), COUNT_COMMON_MEMBER ))
这样就可以得到一组符合要求的名单(随机算法,每次运行结果都不一样,我们只取第一运行的结果):
['N', 'V', 'D', 'K']['P', 'M', 'B', 'S', 'R', 'T']
为了增加趣味以及坑害无辜善良的同志们,班长觉得加入抢红包环节,红包口令就是赤裸裸的“我要去”,两种方案:
- 发10个红包,抢得红包者,作为初选者
- 发(班级人数-10)个红包,没抢得者,作为初选者
很明显,如果大家已经知情的情况下,后者更能调动大家的积极性,但是风险也是有的,抢红包都不积极,对于这种活动一般也不会积极。
我们现在选择前者,得到了抢到红包的10个人:
['V', 'W', 'R', 'H', 'I', 'P', 'J', 'U', 'M', 'S']
事事不如意十有八九,此时,并不一定刚好满足班委4人,其成员6人的要求,那就随机调整一下吧:
red_packets = ['V', 'W', 'R', 'H', 'I', 'P', 'J', 'U', 'M', 'S']common_member = set(class_member_list) - set(class_committees); # 除班级委员之外的同学committees_packets = set(class_committees) & set(red_packets) # 抢红包的班委common_member_packets = set(common_member) & set(red_packets) # 抢红包的其他同学print(committees_packets, '\n', common_member_packets, '\n')count_cp = len(committees_packets)if (count_cp < COUNT_COMMITTEES): committees_final_list = committees_packets | set(random.sample(set(class_committees) - committees_packets, COUNT_COMMITTEES - count_cp)) member_final_list = set(random.sample(common_member_packets, COUNT_COMMON_MEMBER)) print(committees_final_list, '\n', member_final_list)else: committees_final_list = random.sample(committees_packets, COUNT_COMMITTEES) member_final_list = common_member_packets | set(random.sample(common_member - common_member_packets, count_cp - COUNT_COMMON_MEMBER)) print(committees_final_list, '\n', member_final_list)
选取编译执行的一组结果:
{'V', 'W'} {'R', 'U', 'I', 'H', 'M', 'P', 'J', 'S'} {'V', 'W', 'K', 'D'} {'U', 'I', 'H', 'M', 'P', 'S'}
源自:本人个人博客网站yhl’s blog
2 0
- 谁去开会?
- 爸爸去开会
- 终于有伴同去开会了
- 开会去互联网会务O2O服务平台
- 开会
- 开会
- 开会
- 开会
- 开会
- 开会
- 开会
- 开会
- 开会
- 2005/10/8。开始准备去德国开会....
- 迅雷5.9去广告开会员皮肤等等功能的修改方法
- 公民最反感官话套话出炉:对不起 领导开会去了
- 开会回来
- 实验室开会
- C#有空编辑
- .NET中异常处理的最佳实践
- Programming in Java: Multi-threads and interface vs abstract class
- 最小长方形
- js中apply使用方法小议
- 谁去开会?
- MVVM简单了解
- Ubuntu 文件服务器--samba的安装和配置
- SSH框架的部分作用
- 常用的几个开源 API网关管理系统
- Android 手势锁
- Android Log日志规则打印
- android 5.1 kernel 编译模块
- IntelliJ IDEA 15在线激活码