仅在我网站中输入的人数的20%显示div

时间:2017-09-15 21:14:00

标签: javascript

我想显示一个div只占我网站流量的20%,所以我做了这个逻辑:

var div = (Math.floor(Math.random() * 100) + 1) > 20 ? true : false;
if (div)
  // don't show
else
  // show

但我不认为这是准确的,是吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

对于所有随机性,需要有足够大的样本大小才能显示正态分布。如您所见,您获得的访问者越多,该功能就越接近20%

function visitors(n) {
  var visited = 0;
  for (var i = 0; i < n; i++)
    visited += (Math.floor(Math.random() * 100) + 1) > 20 ? 0 : 1;
  console.log("Out of " + n + " visitors, " + visited + " were shown the div. (" + visited / n * 100 + "%)");
}

[1, 10, 100, 1000, 10000, 100000, 1000000].forEach(x => visitors(x));

正如Radmation提到的那样,使用服务器可以为更少的访问者提供更接近20%的内容。

  

我不会使用客户端逻辑,但服务器端逻辑。您可以逐字递增服务器端变量,每次到达5时重置它并告诉客户端显示div。当然,在这种情况下从1开始。如果你需要至少准确 - &gt;你可以使用ajax获取计数器值 - 如果你一次遇到多个请求。