<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-204  評論-90  文章-8  trackbacks-0

    需求:廣告按權重展現

    基本算法描述如下:
    1、每個廣告增加權重
    2、將所有匹配廣告的權重相加sum,
    3、以相加結果為隨機數的種子,生成1~sum之間的隨機數rd
    4、.接著遍歷所有廣告,訪問順序可以隨意.將當前節點的權重值加上前面訪問的各節點權重值得curWt,判斷curWt >=  rd,如果條件成立則返回當前節點,如果不是則繼續累加下一節點. 直到符合上面的條件,由于rd<=sum 因此一定存在curWt>=rd。
    特別說明:
            此算法和廣告的順序無關

    測試代碼如下:

    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;
        }

    }
    posted on 2010-08-31 17:08 一凡 閱讀(3396) 評論(0)  編輯  收藏 所屬分類: JAVA 基礎數據結構&算法
    主站蜘蛛池模板: 免费一区二区三区在线视频 | 免费的一级黄色片| 亚洲色图黄色小说| 99精品国产成人a∨免费看| 亚洲人成图片小说网站| 中文字幕在线视频免费观看 | 免费人成年激情视频在线观看| 亚洲午夜无码久久| 无码人妻精品一二三区免费| 亚洲国产成人精品激情| 免费无码不卡视频在线观看| 亚洲国产欧美日韩精品一区二区三区 | 日韩中文字幕精品免费一区| 2020国产精品亚洲综合网| 大学生一级特黄的免费大片视频| 亚洲欧美日韩一区二区三区 | 亚洲精品国产精品乱码不99| 国产一精品一AV一免费| 亚洲一区二区在线免费观看| 一二三四在线观看免费高清中文在线观看 | 亚洲精品WWW久久久久久| jizz18免费视频| 久久亚洲精品成人综合| 青青在线久青草免费观看| 亚洲国产欧美国产综合一区 | 毛片免费全部播放一级| 羞羞漫画在线成人漫画阅读免费| 亚洲一区二区三区在线播放| 久久免费精彩视频| 亚洲另类无码一区二区三区| 久久亚洲国产成人影院网站 | 24小时日本电影免费看| 久久精品国产亚洲AV未满十八| 相泽亚洲一区中文字幕| 在线a免费观看最新网站| 亚洲高清乱码午夜电影网| 不卡一卡二卡三亚洲| 啦啦啦完整版免费视频在线观看 | 老牛精品亚洲成av人片| 精品国产亚洲一区二区三区| 国产卡二卡三卡四卡免费网址|