public static void main(String[] args) {
Map<Integer,Integer> resultMap=new HashMap<>();
for (int i=1;i<1001;i++){
Map<Integer, Integer> integerIntegerMap = selectRandomlyByWeight();
Set<Integer> integers = integerIntegerMap.keySet();
for (Integer integer : integers) {
if (integer==1){
if (ObjectUtils.isEmpty(resultMap.get(1))){
resultMap.put(1,1);
}else {
resultMap.put(1,resultMap.get(1)+1);
}
}else if (integer==2){
if (ObjectUtils.isEmpty(resultMap.get(2))){
resultMap.put(2,1);
}else {
resultMap.put(2,resultMap.get(2)+1);
}
}else if (integer==3){
if (ObjectUtils.isEmpty(resultMap.get(3))){
resultMap.put(3,1);
}else {
resultMap.put(3,resultMap.get(3)+1);
}
}else if (integer==4){
if (ObjectUtils.isEmpty(resultMap.get(4))){
resultMap.put(4,1);
}else {
resultMap.put(4,resultMap.get(4)+1);
}
}else if (integer==5){
if (ObjectUtils.isEmpty(resultMap.get(5))){
resultMap.put(5,1);
}else {
resultMap.put(5,resultMap.get(5)+1);
}
}
}
}
System.out.println(resultMap.toString());
}
private static Map<Integer,Integer> selectRandomlyByWeight(){
List<Map<Integer,Integer>> userWeightResults = new ArrayList<>();
Map<Integer,Integer> map1=new HashMap<>();
map1.put(1,22);
userWeightResults.add(map1);
Map<Integer,Integer> map2=new HashMap<>();
map2.put(2,22);
userWeightResults.add(map2);
Map<Integer,Integer> map3=new HashMap<>();
map3.put(3,33);
userWeightResults.add(map3);
Map<Integer,Integer> map4=new HashMap<>();
map4.put(4,55);
userWeightResults.add(map4);
Map<Integer,Integer> map5=new HashMap<>();
map5.put(5,99);
userWeightResults.add(map5);
int sum=22+22+33+55+99;
Random random = new Random();
int nextInt = random.nextInt(sum);
int countWeight = 0;
for (Map<Integer,Integer> x : userWeightResults) {
Set<Integer> integers = x.keySet();
for (Integer integer : integers) {
countWeight += x.get(integer);
}
if (nextInt < countWeight) {
return x;
}
}
return null;
}
根据权重 随机分配
于 2024-05-07 18:42:41 首次发布