先说场景: 有一批客户要分配到销售手里进行维护,一个客户的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就可以。这样最后余下的客户,就要按照销售的排序分配了。