谁去开会?

来源:互联网 发布:淘宝怎样提升信誉 编辑:程序博客网 时间: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机被同学偷了怎么办 钱被同学偷了怎么办 上班穿皮鞋脚疼怎么办 高跟靴子买大了怎么办 我怀了第三个小孩怎么办? 离婚前把钱花了怎么办 对谈对象有压力怎么办 和对象感情淡了怎么办 孩子处对象学习下降怎么办 孩子高三成绩差怎么办 老妈怨气太重怎么办 广东小高考有d怎么办 高考考生档案袋有个小洞怎么办 江苏省考生出省后小高考成绩怎么办 江苏小高考三D怎么办 小高考补考没过怎么办 理科高考200多分怎么办 高考没考过200分怎么办 电子手表指针不走了怎么办 家长说你教的不好怎么办 小升初分班考试考砸了怎么办 老公不给老婆看病怎么办 孕妈妈涨奶严重怎么办 90岁老头尿不下尿怎么办 妻子要离婚丈夫不离怎么办 弟媳妇天天在家吵架怎么办 弟媳妇不和我说话怎么办 我想和弟媳妇做一次怎么办 老公对弟媳妇有非分之想怎么办 跟弟媳妇有矛盾怎么办 学生考试前不认真怎么办 有人雇凶要杀我怎么办 高考理综数学英语都没考好怎么办 母亲判刑孩子未成年无人监管怎么办 高三了数学30分怎么办 母猪发烧耳朵放血止不住了怎么办? 青春期孩子动手打父母该怎么办 20岁睡觉不老实怎么办 孕妇梦见钱掉了怎么办 小孩晚上睡觉鼻子塞怎么办 宝宝晚上睡觉鼻子塞怎么办