2012-11-22 50 views
3

我想將我的用戶分成幾個組來運行A/B測試。A/B測試分區功能

通常的做法是隨機分配每個用戶到一個變體並存儲關係,直到A/B測試結束。但是這會迫使我在某處存儲這種關聯,我想避免它。

由於用戶已經在我的應用程序中註冊,我希望有一個函數可以在我的測試中統一分配用戶,這樣我的A/B測試就可以得到非偏斜的結果。

我應該使用哪種散列函數?

+0

乘以一個大的奇數並取乘積modulo 2? – wildplasser

+0

@wildplasser這是我的第一個想法之一,但我沒有足夠的信心使用它。你能否指點我的一些資料來顯示它會和傳統的僞隨機選擇一樣好? – barracel

+0

好吧:測試一下吧!這是一個伯努利過程,因此0 <--> 1(a <--> b)之間的分佈可能與50/50有點不同。順便說一句:你不需要繁殖:奇數保持奇數,偶數甚至會保持...(但你可以測試產品的Ith-bit) – wildplasser

回答

6

這ACM的paper解釋說,MD5是一個很好的哈希函數來獲取實驗之間的兩者的均勻分佈,無明顯相關性:

我們發現,只有加密散列函數MD5產生的實驗之間沒有 相關性。 SHA256(另一個密碼 散列)已接近,需要進行五向交互才能產生 相關性。 .NET字符串散列函數甚至無法通過雙向交互測試。