如何使一些随机数看起来比其他数字更多?

时间:2015-04-15 14:26:40

标签: php random advertising

我正在尝试举办自己的广告。例如,我希望出价高达0.25美元PPC的用户展示的展示次数高于那些出价高达0.10美元的展示次数。我希望将我的数字放在随机数组中,较高出价者会显示更多展示次数。我想我在看错了逻辑。如果我的逻辑可以指向正确的方向,我也许可以找出自己这样做的正确方法。

3 个答案:

答案 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的属性以获得所需的输出。