Java 实现两个List数据平均随机分配

先说场景: 有一批客户要分配到销售手里进行维护,一个客户的list集合,一个销售的list集合,要让销售分到的客户一样多,除非分配到最后客户数量不够每一个销售了,才进行随机分配,销售之间的客户数量只有一个客户数量之差。

纯随机分配,不按照顺序,但保证数量是平均的。

 public static void main(String[] args) {
        List<String> staffList = new ArrayList<>();// 销售列表
        staffList.add("张三");
        staffList.add("李四");
        staffList.add("王五");

        List<String> usertList = new ArrayList<>(); // 客户列表
        usertList.add("客户1");
        usertList.add("客户2");
        usertList.add("客户3");
        usertList.add("客户4");
        usertList.add("客户5");
        usertList.add("客户6");
        usertList.add("客户7");
        usertList.add("客户8");
        
        int staffCount = staffList.size(); //销售数量
        int userCount = usertList.size();//客户数量
        Random random = new Random(); // 随机数
        
        int staffCount1 = staffCount; // 定义一个销售固定数量
        List<String> staffList1 = new ArrayList<>();
        staffList1.addAll(staffList);// 定义一个销售固定值

        for (int i = 0; i < userCount; i++) {
            int nextInt = random.nextInt(staffCount1);
            System.out.println(usertList.get(i) +"--->归属销售为:"+staffList.get(nextInt));
            staffCount1--;
            staffList.remove(nextInt);
            if (staffCount1 == 0) {
                staffCount1 = staffCount;
                staffList.addAll(staffList1);
            }
        }
    }

在这里插入图片描述

可以看出来分配的顺序是乱的,但肯定的是每个销售每一轮都可以分配到,不会造成不平均的情况,最后的余下的客户就要看运气了,也可以做成按顺序分配,就把随机数替换成0就可以。这样最后余下的客户,就要按照销售的排序分配了。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值