我正在尝试举办自己的广告。例如,我希望出价高达0.25美元PPC的用户展示的展示次数高于那些出价高达0.10美元的展示次数。我希望将我的数字放在随机数组中,较高出价者会显示更多展示次数。我想我在看错了逻辑。如果我的逻辑可以指向正确的方向,我也许可以找出自己这样做的正确方法。
答案 0 :(得分:0)
你可以简单地在一个数组中添加它们(这是一个解决方案;但很可能不是最好的方法)。
让我们想象一下我们每个人都有一个体重。我们将每个十美分复制到数组中。
就我的例子而言,我们有company1
给出0.30美元,company2
给出0.10美元。
你的数组看起来像这样:
$data = array(
'company1', 'company1', 'company1',
'company2'
);
然而,这类代的问题是您的阵列可能变得非常大。对于较大的应用,这可能不太理想。
就最有效的解决方案而言,我认为您提出错误的问题 - 您应该考虑制作自己的算法,向付费更多的人展示更频繁的问题,而不是基于随机数生成。
答案 1 :(得分:0)
我的想法是:
1)使用使用阈值并根据广告支付确定其最大尺寸。 F.E.将使用金额设定为已支付的金额。在所有阈值为空之后重置所有阈值。 Afaik与谷歌如何为他们的广告系统工作类似。
2)使用secon rand。让它与ech广告的vaktor相比,f.e。支付给它的美分。只有当第二个兰特大于你使用它的faktor时。否则你重复第一个兰特来获得一个新广告。
就健康而言,第一个应该是要走的路。你甚至可以将两者结合起来1)的阈值可能是2)中第二个兰特的因子。
答案 2 :(得分:0)
Zarthus的最后一个建议是正确的方法:
class AdObject
{
private $asset = 0;
function __construct($asset)
{
$this->asset = $asset;
}
public function getAsset()
{
return $this->asset;
}
public function setAsset($asset_input)
{
$this->asset = $asset_input;
}
public function getScore()
{
return ($this->asset *(float)rand()/(float)getrandmax());
}
}
function chooseAdvertising($ads_array)
{
$scores_array = array ();
foreach ($ads_array as $value)
$scores_array[] = $value->getScore();
$max_indexes = array_keys($scores_array, max($scores_array));
return $max_indexes[0];
}
$advertisment_arr = array (new AdObject("0.15"), new AdObject("0.20"), new AdObject("0.32"));
我们假设chooseAdvertising函数会为您提供要在$ advertisment_arr中包含的广告索引。
您可以自定义函数getScore或AdObject的属性以获得所需的输出。