<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 基礎數據結構&算法
    主站蜘蛛池模板: 亚洲a∨无码一区二区| 久久精品成人免费观看97| 免费大学生国产在线观看p| 精品熟女少妇aⅴ免费久久| 91情国产l精品国产亚洲区| 热99re久久精品精品免费| aa级毛片毛片免费观看久| 亚洲黄色在线播放| 午夜国产羞羞视频免费网站| 日本中文字幕免费高清视频| 亚洲欧美成人av在线观看| 亚洲精品美女久久久久99| 成人性生交视频免费观看| 免费黄网站在线观看| 亚洲男人的天堂网站| 亚洲伦理一区二区| 四虎永久免费观看| 久久国产免费福利永久| 久久国产精品免费一区二区三区| 亚洲男人天堂2022| 亚洲精品二区国产综合野狼| 日韩毛片无码永久免费看| 成人黄网站片免费视频 | 2020国产精品亚洲综合网 | 久久精品国产亚洲AV网站| 日本免费一区尤物| 色猫咪免费人成网站在线观看 | 久久国产精品萌白酱免费| 免费观看四虎精品成人| www.亚洲日本| 亚洲色图.com| 亚洲av永久无码精品漫画| 久久亚洲2019中文字幕| 国产在线观看免费视频播放器| 6080午夜一级毛片免费看 | 成熟女人牲交片免费观看视频 | 91在线视频免费看| 少妇太爽了在线观看免费视频| 91精品全国免费观看青青| 久久久久久亚洲av无码蜜芽| 亚洲精品亚洲人成在线播放|