【问题标题】:php mt_rand and google analyticsphp mt_rand 和谷歌分析
【发布时间】:2026-02-08 20:10:01
【问题描述】:

我一直在使用mt_rand(1,6),根据生成的随机整数,将使用不同的 CSS 样式(用于 MVT)。

就 PHP 函数而言,Analytics 为何会说唯一 访问者(总共约 5K)存在巨大差异(在某些情况下 >5%)?我认为这应该更接近于 0。

那么,这更有可能是谷歌端的一些统计结果,不是 php的错误,还是我应该有更好的功能使用?

【问题讨论】:

  • 这很难回答,因为我们看不出 MVT CSS 的差异有多大。如果它们很激烈,那么您可以预期远远超过 5%。有趣的是,熵是一个棘手的问题——如果不包含混沌元素,很难实现真正的熵。
  • 我只是想了解,即使某些页面确实吸引了更多流量,如果所有页面都“均匀”分布,我不应该看到唯一访问的均匀分布,无论网站如何内容/搜索引擎优化?
  • 那么mt_rand() 函数不是您最好的选择,因为它会以低于分布式的方式分配流量。最好循环通过(循环方式!),以便每个选项接收相同数量的访客/流量。然后你会看到哪个被证明是最受欢迎的。

标签: php google-analytics ab-testing multivariate-testing


【解决方案1】:

mt_rand() 不会平均分配流量/选项。恰恰相反。可能是随机选择的选项将流量传送到:1,1,6,6,6,6,6,6,3

最好的办法是使用“循环”方法,通过 MVT(多变量测试)平均分配流量 - 循环:1,2,3,4,5,6 并重复。

在 PHP 中有很多方法可以做到这一点,但简单地说,伪代码是:

Render v1,
Write increment to file/DB
Render v2,
Write increment to file/DB
etc..
Reaching v6, reset to v1

对每个(6 个?)应用大致相等的负载应该会产生更准确的结果,因为每个潜在的选项/版本都会收到相同的结果。这里不需要更复杂的 MVT。

有趣的是,在我之前使用过的地方,我们总是按百分比(而不是随机)分配流量,因为我们可以根据结果做出合格的决定。如果您没有平等地提供每个选项,那么您就无法比较结果!

希望这有助于进一步。

【讨论】: