[廣告]根據廣告權重展示廣告次數的算法


前言

  • 廣告商給廣告平台提供方投放廣告
  • 廣告平台提供方根據廣告商投放的資金確定各個廣告的權重
  • 廣告平台提供方再根據權重投放廣告

廣告權重算法

  • 若:廣告A=1,廣告B=2,廣告C=3, 廣告D=4, 廣告E=5
  • 可以將A、B、C、D、E進行數字區間映射,即:廣告A=[0,1],廣告B=[1,3],廣告C=[3,6],廣告D=[6,10],廣告E=[10,15]
  • 然后定義random rd=new random()
    • int num=rd.nextInt(15);
  • 隨機取到的num位於上面5個區間中的哪個,就是顯示哪個廣告

驗證例子

1、條件

    // 5個廣告權重
    private static int[] adWeight = {1,2, 3, 4, 5};
    // 5個廣告名稱
    private static String[] adName = {"A", "B", "C", "D", "E"};

2、根據權重算法寫,這里貼出算法核心代碼:

    private static String getCurrentAd() {

    BBAd current = null;
    // 計算權重和和數字區間映射
    if (weightSum == 0) {
        for (int i=0; i<5; i++) {
            ads.get(i).setWeightAreaMin((int)weightSum);
            weightSum += ads.get(i).getWeight();
            ads.get(i).setWeightAreaMax((int)weightSum);
        }
    }
    // 隨機取得0~weightSume之間的數字
    int r = new Random().nextInt((int)weightSum);
    // 檢測隨機數位於5個區間中的哪個
    for (BBAd ad : ads) {
        // 得到當前廣告
        if (ad.betweenArea(r)) {
            current = ad;
        }
    }
    // 返回廣告名稱
        return current.getName();
    }

運行結果

5個廣告投放10次結果輸出

廣告展示列表:
B, D, C, C, C

B, D, A, C, D

-----------------------------------
廣告權重總和:15.0
廣告展示次數總和:10.0
-----------------------------------
各個廣告權重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334, 
-----------------------------------
各個廣告出現次數:A:1, B:2, C:4, D:3, E:0, 
-----------------------------------
各個廣告次數概率:A:0.1, B:0.2, C:0.4, D:0.3, E:0.0, 

5個廣告投放100次結果輸出

廣告展示列表:
B, D, E, E, C

C, A, E, E, E

E, E, C, E, D

E, C, B, A, D

E, B, E, B, C

E, D, A, D, C

A, D, D, E, C

C, E, E, D, E

A, B, D, B, E

E, E, D, E, B

E, E, E, C, D

C, D, B, E, B

A, E, D, E, B

E, D, D, C, C

C, D, E, D, D

B, B, E, E, E

C, E, C, E, E

B, E, C, D, A

E, E, A, B, D

D, D, E, E, E

-----------------------------------
廣告權重總和:15.0
廣告展示次數總和:100.0
-----------------------------------
各個廣告權重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334, 
-----------------------------------
各個廣告出現次數:A:8, B:14, C:16, D:22, E:40, 
-----------------------------------
各個廣告次數概率:A:0.08, B:0.14, C:0.16, D:0.22, E:0.4, 

5個廣告投放1000次結果輸出

-----------------------------------
廣告權重總和:15.0
廣告展示次數總和:1000.0
-----------------------------------
各個廣告權重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334, 
-----------------------------------
各個廣告出現次數:A:68, B:134, C:197, D:277, E:324, 
-----------------------------------
各個廣告次數概率:A:0.068, B:0.134, C:0.197, D:0.277, E:0.324, 

5個廣告投放10000次結果輸出

-----------------------------------
廣告權重總和:15.0
廣告展示次數總和:10000.0
-----------------------------------
各個廣告權重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334, 
-----------------------------------
各個廣告出現次數:A:670, B:1366, C:2003, D:2630, E:3331, 
-----------------------------------
各個廣告次數概率:A:0.067, B:0.1366, C:0.2003, D:0.263, E:0.3331, 

5個廣告投放20000次結果輸出

-----------------------------------
廣告權重總和:15.0
廣告展示次數總和:20000.0
-----------------------------------
各個廣告權重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334, 
-----------------------------------
各個廣告出現次數:A:1366, B:2693, C:3908, D:5254, E:6779, 
-----------------------------------
各個廣告次數概率:A:0.0683, B:0.13465, C:0.1954, D:0.2627, E:0.33895, 

結論

  • 展示次數越大,廣告展示次數概率越接近廣告權重概率。

 

 

本站文章為 寶寶巴士 SD.Team 原創,轉載務必在明顯處注明:(作者官方網站: 寶寶巴士 
轉載自【寶寶巴士SuperDo團隊】 原文鏈接: http://www.cnblogs.com/superdo/p/4923975.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM