Php 以概率加载内容的最佳方式
我正在我的一个网站上做一些A/B测试,出于各种原因,我需要一个特定的内容出现在页面负载的1%。换句话说,如果页面被加载100次,我希望我的特殊内容出现一次 使用PHP最好的方法是什么 我可以使用rand()函数执行类似于Php 以概率加载内容的最佳方式,php,random,probability,Php,Random,Probability,我正在我的一个网站上做一些A/B测试,出于各种原因,我需要一个特定的内容出现在页面负载的1%。换句话说,如果页面被加载100次,我希望我的特殊内容出现一次 使用PHP最好的方法是什么 我可以使用rand()函数执行类似于if(rand(0,1)>=0.99){//Show content} 但是有更好或更可靠的方法吗?我在自己开发的网站上做了类似的事情,效果非常好。PHP是服务器端的,所以它的可靠性与您将得到的一样高。我会这样做: <?php if (mt_rand(1, 100) ===
if(rand(0,1)>=0.99){//Show content}
但是有更好或更可靠的方法吗?我在自己开发的网站上做了类似的事情,效果非常好。PHP是服务器端的,所以它的可靠性与您将得到的一样高。我会这样做:
<?php if (mt_rand(1, 100) === 100): ?>
// pure html content here
<?php endif ?>
//纯html内容在这里
编辑:
实用性的本质意味着,给定一个足够大的样本,
mt_rand(1100)
将在1%的时间内生成匹配的数字。你可以使用奇特的数据库或平面文件来提高赔率,但这是不必要的,因为你只需要相信mersenne twister
,它确实能正确地生成赔率。我在自己开发的一个网站上做了类似的事情,效果非常好。PHP是服务器端的,所以它的可靠性与您将得到的一样高。我会这样做:
<?php if (mt_rand(1, 100) === 100): ?>
// pure html content here
<?php endif ?>
//纯html内容在这里
编辑:
实用性的本质意味着,给定一个足够大的样本,
mt_rand(1100)
将在1%的时间内生成匹配的数字。您可以使用奇特的数据库或平面文件来提高赔率,但这是不必要的,因为您只需要相信mersenne twister
,它确实可以正确地生成赔率。实际上,这与PHP无关,而更多的是关于这样做的策略
如果需要在1%的视图中精确显示,可以将计数器与Redis或Memcached一起使用,也可以在数据库中使用。
-如果您的目标是精确控制视图数量,那么这很好。
-注意。如果您使用Redis或Mamcached,则在服务器或服务重新启动后,计数器将重置
您对rand()的建议也同样适用,但接近1%,但不是精确的1%。实际上,从长远来看,它将接近1%。
-更快,因为不需要访问redis/memcached/database;
-将更随机地出现,不完全是每100次查看。事实上,这不是关于PHP,而是关于执行策略 如果需要在1%的视图中精确显示,可以将计数器与Redis或Memcached一起使用,也可以在数据库中使用。 -如果您的目标是精确控制视图数量,那么这很好。 -注意。如果您使用Redis或Mamcached,则在服务器或服务重新启动后,计数器将重置 您对rand()的建议也同样适用,但接近1%,但不是精确的1%。实际上,从长远来看,它将接近1%。 -更快,因为不需要访问redis/memcached/database;
-将更随机地出现,而不是每100次查看一次。鉴于以下陈述,我不会选择兰德解决方案: 换句话说,如果页面被加载100次,我希望我的特殊内容出现一次 你可能永远无法从兰特(0100)那里得到99英镑
用一列创建一个非常简单的数据库表-
计数器-
,并在每次点击时更新它。每次计数器达到100的倍数时都包含一段代码。鉴于以下陈述,我不会选择兰德解决方案:
换句话说,如果页面被加载100次,我希望我的特殊内容出现一次
你可能永远无法从兰特(0100)那里得到99英镑
用一列创建一个非常简单的数据库表-
计数器-
,并在每次点击时更新它。每次计数器点击100的倍数时都包含代码。换句话说,如果页面加载100次,我希望我的特殊内容出现一次。
在您的情况下,它只是随机的。。它可以多次显示特殊内容,因此,在100次加载中,它最多只能加载1次?这是所有加载还是每个IP加载?我不知道,这不是问题:)换句话说,如果页面加载100次,我希望我的特殊内容出现一次。
在你的情况下,它只是随机的。。它可以多次显示特殊内容,因此,在100次加载中,它最多只能加载1次?这是所有负载还是每个IP的负载?我不知道,这不是问题:)