我是靠谱客的博主 轻松季节,最近开发中收集的这篇文章主要介绍java根据权重输出,Java 根据权重获取数据 基础 极简 准确率高,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 根据权重获取数据 基础 极简 准确率高所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部