我正在制作一个广告网络,我想展示具有最高CPM(非常重要)和最古老日期(不太重要)的广告。但是,如果我这样做,我将一直得到相同的广告,所以我想在等式中也添加一些随机性。
所以我想做一个算法,为这两个条件增加一些权重,同时保持它是半随机的。我甚至不知道从哪里开始,我也找不到任何能帮助我的东西。如果你能给我一个答案或给我提供一些有用的东西,我将不胜感激。
谢谢
如果你需要一些定义良好的概率分布的随机性,你可能需要内存中的所有广告。我假设,这在你的应用中是不可行的,所以我将着重于另一种近似。但我将在这个问题的最后回到这个问题。
近似核心方面是,您需要一个单一的重要性值来组合任意数量的属性。在您的情况下,这可能是以下内容:
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
广告,并定义该子集上的概率分布。