概述
package sl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AssignRule {
/**
* user_1 2
* user_2 3
* user_3 4
* user_4 1
*
* target
*
* getRandom() return user_id
*
* 若 user_1 权重 1 则 1 list1 id1
* user_2 权重 2 则 2,3 list2 id2
* user_3 权重 3 则 4,5,6 list3 id3 map>
* user_4 权重 4 则 7,8,9,10 list4 id4
*
* random 8 => id4
* random 3 => id2
*/
public static int getRandomUserId( Map rawMap){
Map> idMapper=new HashMap<>();
int count=0;
for(int k:rawMap.keySet()){
List numList=new ArrayList<>();
for(int i=0;i
count++;
numList.add(count);
}
idMapper.put(k,numList);
}
int max=count,min=1;
int rand = (int) (Math.random()*(max)+min);
for(int k:idMapper.keySet()){
for(int v:idMapper.get(k)){
if(v==rand){
return k;
}
}
}
return -1;
}
public static void main(String[] args) {
/**
* key target
* val ratio
*/
Map rawMap=new HashMap<>();
rawMap.put(1,1);
rawMap.put(2,2);
rawMap.put(3,3);
rawMap.put(4,4);
Map map=new HashMap<>();
map.put(1,0);
map.put(2,0);
map.put(3,0);
map.put(4,0);
for(int i=0;i<100000;i++){
for(int k:map.keySet()){
if(k==getRandomUserId(rawMap)){
int v=map.get(k);
map.put(k,v+1);
}
}
}
for(int k:map.keySet()){
System.out.println(k+" = "+map.get(k));
}
}
}
最后
以上就是轻松季节为你收集整理的java根据权重输出,Java 根据权重获取数据 基础 极简 准确率高的全部内容,希望文章能够帮你解决java根据权重输出,Java 根据权重获取数据 基础 极简 准确率高所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复