我正在制作一个广告网络,我希望展示CPM最高(非常重要)和最旧日期(不太重要)的广告。但是,如果我这样做,我会一直得到相同的广告,所以我也希望在等式中添加一些随机性。
所以我想制作一个算法,增加一些权重做2条件,同时保持半随机。我不知道哪里可以开始,我也找不到任何可以帮助我的东西。如果你能留下答案或推荐给我能提供帮助的东西,我将不胜感激。
由于
答案 0 :(得分:0)
如果您需要具有明确定义的概率分布的随机性,您可能需要内存中的所有广告。我认为,这在您的应用程序中是不可行的,因此我将专注于另一种近似。但是我会在这个问题的最后回到那个。
核心方面是您需要一个结合了任意数量属性的单一重要性值。在您的情况下,这可能是以下内容:
I = weight_cpm * cpm / max_cpm + weight_age * age / max_age
最大值用于将两个刻度相互标准化,也可以保留。权重指定每个属性的相对重要性。
因此,您可以针对此重要性值对广告进行排序,并拍摄第k个广告,其中k
是随机数。
如果要指定概率分布,则需要为每个广告指定频率。这可能是它的重要性除以所有广告重要性的总和。这样做,可以确保频率总和为1。
您需要做的是定义广告的任意顺序并叠加其频率值。例如,如果频率为0.1, 0.1, 0.5, 0.3
,则可以按如下方式堆叠它们:
0.1 | 0.1 | 0.5 | 0.3 |
-------------------------------------------
0 0.1 0.2 0.7 1.0
Ad1 Ad2 Ad3 Ad4
然后,您需要做的就是生成0到1之间的随机数,然后选择随机数落在其间隔内的广告。例如。如果您的随机数为0.6,则选择Ad3。
如果您需要两者,您可以采取一些混合方法。即检索有关其重要性的热门n
广告,并定义此子集的概率分布。