2017-09-15 72 views
0

我想顯示只有20%的我的網站流量的一個div,所以我做了這樣的邏輯:顯示DIV只有20%的人,在我的網站上輸入

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

但我不我認爲這很準確,是嗎?

謝謝。

+1

取決於你有多少訪問者......如果你有很多很好夠 – Peter

+0

平均而言,如果你有足夠的訪問者將是準確的。 –

+0

彼得是對的。如果你有很多遊客,你會得到接近20%的分銷。如果沒有,你可能會得到一些小東西。 –

回答

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%遊客的數量較少。

我不會使用客戶端邏輯這個,但服務器端邏輯。你可以從字面上增加一個服務器端變量,每次它重置它並告訴客戶端顯示div。在這種情況下,從1開始。如果您至少需要確切的話 - >您也可以使用ajax來獲取計數器值 - 如果您一次運行多個請求。