NJUCSE17

班级活动参加队列

2018-11-29

说明

为了防止强制活动找不到人参加,班委讨论后拟如下方法:

随机生成本班31人的循环队列,但凡有院系强制任务,取出接下来几位同学参加,并标记。特殊情况如下:

  1. 因事无法参加:出示具体原因后,保留在队列位置,不加标记,顺次取下一位同学。
  2. 自愿参加:给下一次打标记。
  3. 活动优先考虑自愿参加的同学。
  4. 运动会参加入场式和广播操的已经算参加过了,按2处理。马上进行的合唱选人也由本方案进行。

该方法旨在保证每位同学参加的活动次数相同、能事先安排好相关事宜。

代码

使用 NumPy 1.15 (python3)

1
2
3
4
5
6
7
8
9
10
import numpy

students = [
// omitted :)
]

if __name__ == '__main__':
numpy.random.shuffle(students)
for student in students:
print(student)

结果

序号 学号 参加活动(标记)
1 171860649 写文章
2 171250630 运动会
3 171860543 写文章
4 171250623
5 171860017 运动会
6 171860571
7 171860609
8 171860553
9 171860592
10 171860637
11 171860696 合唱
12 171860599
13 171860639
14 171860509
15 171860575
16 171860013
17 171860532
18 171860558
19 171860508
20 171860547 运动会
21 171180558
22 171870691
23 171860548
24 171860647
25 171860624
26 171860004 运动会
27 171860578
28 171860658 运动会
29 171860695 运动会
30 171860020
31 171860538

注:上表中的标记包括本学期的两个活动。如果你发现标记有误请及时联系班委。