当前位置:   article > 正文

[广告]根据广告权重展示广告次数的算法

java 权重算法按权重展现广告

前言

  • 广告商给广告平台提供方投放广告
  • 广告平台提供方根据广告商投放的资金确定各个广告的权重
  • 广告平台提供方再根据权重投放广告

广告权重算法

  • 若:广告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、条件

  1. // 5个广告权重
  2. private static int[] adWeight = {1,2, 3, 4, 5};
  3. // 5个广告名称
  4. private static String[] adName = {"A", "B", "C", "D", "E"};

2、根据权重算法写,这里贴出算法核心代码:

  1. private static String getCurrentAd() {
  2. BBAd current = null;
  3. // 计算权重和和数字区间映射
  4. if (weightSum == 0) {
  5. for (int i=0; i<5; i++) {
  6. ads.get(i).setWeightAreaMin((int)weightSum);
  7. weightSum += ads.get(i).getWeight();
  8. ads.get(i).setWeightAreaMax((int)weightSum);
  9. }
  10. }
  11. // 随机取得0~weightSume之间的数字
  12. int r = new Random().nextInt((int)weightSum);
  13. // 检测随机数位于5个区间中的哪个
  14. for (BBAd ad : ads) {
  15. // 得到当前广告
  16. if (ad.betweenArea(r)) {
  17. current = ad;
  18. }
  19. }
  20. // 返回广告名称
  21. return current.getName();
  22. }

运行结果

5个广告投放10次结果输出

  1. 广告展示列表:
  2. B, D, C, C, C
  3. B, D, A, C, D
  4. -----------------------------------
  5. 广告权重总和:15.0
  6. 广告展示次数总和:10.0
  7. -----------------------------------
  8. 各个广告权重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334,
  9. -----------------------------------
  10. 各个广告出现次数:A:1, B:2, C:4, D:3, E:0,
  11. -----------------------------------
  12. 各个广告次数概率:A:0.1, B:0.2, C:0.4, D:0.3, E:0.0,

5个广告投放100次结果输出

  1. 广告展示列表:
  2. B, D, E, E, C
  3. C, A, E, E, E
  4. E, E, C, E, D
  5. E, C, B, A, D
  6. E, B, E, B, C
  7. E, D, A, D, C
  8. A, D, D, E, C
  9. C, E, E, D, E
  10. A, B, D, B, E
  11. E, E, D, E, B
  12. E, E, E, C, D
  13. C, D, B, E, B
  14. A, E, D, E, B
  15. E, D, D, C, C
  16. C, D, E, D, D
  17. B, B, E, E, E
  18. C, E, C, E, E
  19. B, E, C, D, A
  20. E, E, A, B, D
  21. D, D, E, E, E
  22. -----------------------------------
  23. 广告权重总和:15.0
  24. 广告展示次数总和:100.0
  25. -----------------------------------
  26. 各个广告权重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334,
  27. -----------------------------------
  28. 各个广告出现次数:A:8, B:14, C:16, D:22, E:40,
  29. -----------------------------------
  30. 各个广告次数概率:A:0.08, B:0.14, C:0.16, D:0.22, E:0.4,

5个广告投放1000次结果输出

  1. -----------------------------------
  2. 广告权重总和:15.0
  3. 广告展示次数总和:1000.0
  4. -----------------------------------
  5. 各个广告权重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334,
  6. -----------------------------------
  7. 各个广告出现次数:A:68, B:134, C:197, D:277, E:324,
  8. -----------------------------------
  9. 各个广告次数概率:A:0.068, B:0.134, C:0.197, D:0.277, E:0.324,

5个广告投放10000次结果输出

  1. -----------------------------------
  2. 广告权重总和:15.0
  3. 广告展示次数总和:10000.0
  4. -----------------------------------
  5. 各个广告权重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334,
  6. -----------------------------------
  7. 各个广告出现次数:A:670, B:1366, C:2003, D:2630, E:3331,
  8. -----------------------------------
  9. 各个广告次数概率:A:0.067, B:0.1366, C:0.2003, D:0.263, E:0.3331,

5个广告投放20000次结果输出

  1. -----------------------------------
  2. 广告权重总和:15.0
  3. 广告展示次数总和:20000.0
  4. -----------------------------------
  5. 各个广告权重概率:A:0.06666667, B:0.13333334, C:0.2, D:0.26666668, E:0.33333334,
  6. -----------------------------------
  7. 各个广告出现次数:A:1366, B:2693, C:3908, D:5254, E:6779,
  8. -----------------------------------
  9. 各个广告次数概率: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

 

 

转载于:https://www.cnblogs.com/superdo/p/4923975.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/289171
推荐阅读
相关标签
  

闽ICP备14008679号