Java实现的权重算法(按权重展现广告)
发布时间:2020-09-01 18:49:29 所属栏目:Python 来源:互联网
导读:基本算法描述如下:1、每个广告增加权重2、将所有匹配广告的权重相加sum,3、以相加结果为随机数的种子,生成1~sum之间的随机数rd
|
基本算法描述如下: 1、每个广告增加权重 此算法和广告的顺序无关
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class Test {
/**
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List<Node> arrNodes = new ArrayList<Node>();
Node n = new Node(10,"测试1");
arrNodes.add(n);
n = new Node(20,"测试2");
arrNodes.add(n);
n = new Node(30,"测试3");
arrNodes.add(n);
n = new Node(40,"测试4");
arrNodes.add(n);
//Collections.sort(arrNodes,new Node());
Map<String,Integer> showMap = null;
int sum = getSum(arrNodes);
int random = 0;
Node kw = null;
for(int k = 0; k < 20; k++) {
showMap = new LinkedHashMap<String,Integer>();
for(int i = 0; i < 100; i++) {
random = getRandom(sum);
kw = getKW(arrNodes,random);
if(showMap.containsKey(kw.kw)) {
showMap.put(kw.kw,showMap.get(kw.kw) + 1);
} else {
showMap.put(kw.kw,1);
}
//System.out.println(i + " " +random + " " + getKW(arrNodes,random));
}
System.out.print(k + " ");
System.out.println(showMap);
}
}
public static Node getKW(List<Node> nodes,int rd) {
Node ret = null;
int curWt = 0;
for(Node n : nodes){
curWt += n.weight;
if(curWt >= rd) {
ret = n;
break;
}
}
return ret;
}
public static int getSum(List<Node> nodes) {
int sum = 0;
for(Node n : nodes)
sum += n.weight;
return sum;
}
public static int getRandom(int seed) {
return (int)Math.round(Math.random() * seed);
}
}
class Node implements Comparator{
int weight = 0;
String kw = "";
public Node() {}
public Node(int wt,String kw) {
this.weight = wt;
this.kw = kw;
}
public String toString(){
StringBuilder sbBuilder = new StringBuilder();
sbBuilder.append(" weight=").append(weight);
sbBuilder.append(" kw").append(kw);
return sbBuilder.toString();
}
public int compare(Object o1,Object o2) {
Node n1 = (Node)o1;
Node n2 = (Node)o2;
if(n1.weight > n2.weight)
return 1;
else
return 0;
}
}
(编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 在Matplotlib中绘制两行之间的角度的最佳方式
- python – 禁止“程序无法启动因为X.dll丢失”错误弹出窗口
- python – Groupby列表中的多个列
- python – 如何在Django 1.9中设置“简单”密码
- django-forms – 如何使用modelformset_factory创建一个空的
- python项目的项目结构
- python – plotly.offline.iplot给出一个大的空白字段作为输
- python – 使用Numpy stride_tricks获取非重叠的数组块
- python – 从defaultdict获取原始密钥集
- 如何获取numpy.random.choice的索引? – Python
