繁体   English   中英

您如何在php中的不同条件下放置“权重”,同时又保持结果半随机?

[英]How do you put 'weight' on different conditions in php while also keeping your results semi-random?

我正在建立一个广告网络,我想显示具有最高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广告,并定义此子集上的概率分布。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM