码迷,mamicode.com
首页 > 其他好文 > 详细

基于hash的AB测试

时间:2019-11-06 20:04:41      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:SHA256   new   哈希函数   组成   分析   write   不同的   ash   code   

AB测试

为同一个目标,设计两种方案,将两种方案随机投放市场中,让组成成分相同(相似)用户去随机体验两种方案之一,根据观测结果,判断哪个方案效果更好。

基于hash的AB测试

具体的实现方法为:
在AB测试中需要将用户随机的分成两组,通过对每个用户唯一id做hash运算,并对hash值对2取模,便可以将用户分成0,1两组(分桶测试便是hahs对n取模)。
每组采用不同的策略,并定义一个策略Id,跟随不同的策略埋点,在最后回收策略Id,最后通过策略id分析ab两种策略的好坏。

golang中的hash

在golang中的标准库中实现了fnv、sha1、sha256、sha512四种哈希函数。其中fnv是简单的非加密hash函数。
golang中提供了同一的hash接口:

  • type Hash
type Hash interface {
    // 通过嵌入的匿名io.Writer接口的Write方法向hash中添加更多数据,永远不返回错误
    io.Writer
    // 返回添加b到当前的hash值后的新切片,不会改变底层的hash状态
    Sum(b []byte) []byte
    // 重设hash为无数据输入的状态
    Reset()
    // 返回Sum会返回的切片的长度
    Size() int
    // 返回hash底层的块大小;Write方法可以接受任何大小的数据,
    // 但提供的数据是块大小的倍数时效率更高
    BlockSize() int
}
  • type?Hash32?
type Hash32 interface {
    Hash
    Sum32() uint32
}
  • type Hash64
type Hash64 interface {
    Hash
    Sum64() uint64
}

以上四种hash运算便是实现了这个接口。
以fnv为例:

h := fnv.New64()
h.Write([]byte(userId))
i := h.Sum64()
if i%2 != 0{
    Strategy a ...
}else{
    Strategy b ...
}

基于hash的AB测试

标签:SHA256   new   哈希函数   组成   分析   write   不同的   ash   code   

原文地址:https://www.cnblogs.com/typeck/p/11808187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!