如何在Google Sheets中实现两个列表的随机均匀分配?
在Google Sheets中实现运动的均匀随机分配
完全可以实现,以下是具体方案,能保证5项运动以2、2、1的均匀分配比例随机分给3个人,避免出现某个人分到3-4项的极端情况:
步骤1:准备数据
- 在A列(A2:A6)输入所有运动:打棒球、打板球、打网球、打高尔夫、打橄榄球
- 在C列(C2:C4)输入所有人名:Tim、Steve、Max
步骤2:使用数组公式实现分配
在B2单元格输入以下公式,直接生成每个运动对应的分配结果:
=ARRAYFORMULA( LET( sports, A2:A6, people, C2:C4, total_sports, COUNTA(sports), total_people, COUNTA(people), base_num, FLOOR(total_sports / total_people), extra_num, MOD(total_sports, total_people), // 生成每人基础分配的人名列表(每人1项) base_list, FLATTEN(SEQUENCE(base_num, 1, 0, 0) + people), // 随机选出2个不同的人名,各加1项分配 extra_list, INDEX(SORTBY(people, RANDARRAY(total_people)), SEQUENCE(extra_num)), // 合并列表并随机打乱顺序 full_assignment, SORTBY(VSTACK(base_list, extra_list), RANDARRAY(total_sports)), // 关联运动和分配结果 HSTACK(sports, full_assignment) ) )
公式说明
LET函数用于定义变量,简化公式结构base_num是每人最少分配的运动数量(5÷3取整为1),extra_num是剩余需要额外分配的数量(5%3=2)base_list生成每个人名重复1次的基础列表extra_list通过随机排序人名后选取前2个,确保额外名额分给不同的人full_assignment合并基础列表和额外列表后随机打乱,保证分配的随机性HSTACK将运动和对应的分配结果横向关联
每次刷新表格(按下F9键),分配结果会重新随机生成,但始终保持2、2、1的均匀比例,不会出现极端分配情况。
内容的提问来源于stack exchange,提问作者FlorianT.
相关产品推荐
相关产品推荐

