需求是,把所有的成员平均分成若干个小组。这里,提供一个人员列表,比如成员有50人,需要分成7个小组,要求随机性,每次和每次分组的结果应该不一致。
核心要点
- 首先决定好要分的小组个数,本题中假设有50人,分7个小组,平均每个小组个数应该是7
- 为了实现随机性,我们可以根据人名的长度(cksum值随机数)来做一个运算,比如用一个随机数+人名的cksum值随机数得到一个随机数,然后除以7取余数,余数是几就把用户分到第几组里
- 考虑到人员的数量较少,最终分组结果一定不均匀,比如,有的小组分了10个人。但有的小组却分到了3人。这样严重不均衡
- 为了让人员更加均衡,需要把人员偏多的组(大于7的)均分一部分成员到人数偏少的组(小于7的)
shuf 用于打乱排序
1 | $ echo -e "1\n2\n3\n4" |
cksum 获得字符串或者文件的随机数
1 | $ echo "asdfdsfsd"|cksum #前面数字为随机数 后面都是字节数 |
代码内容
1 |
|