1 Star 1 Fork 0

zhuyuns / basic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
uhash.go 818 Bytes
一键复制 编辑 原始数据 按行查看 历史
wing 提交于 2021-12-18 11:42 . 添加基础包
package bloomfilter
import (
"crypto/rand"
)
type UHash struct {
A int64
B int64
P int64
MAX int64
}
func (h *UHash) Hash(X uint32) uint32 {
hash := ((h.A*int64(X) + h.B) % h.P) % h.MAX
return uint32(hash)
}
//---------------------------------------------------------- init a hash function
func UHashInit(numbins uint32) UHash {
h := UHash{}
prime, _ := rand.Prime(rand.Reader, _msb(numbins)+1)
h.P = prime.Int64()
h.MAX = int64(numbins)
a, _ := rand.Int(rand.Reader, prime)
b, _ := rand.Int(rand.Reader, prime)
h.A = a.Int64()
h.B = b.Int64()
for h.A == 0 { // make sure h.A is not zero
a, _ = rand.Int(rand.Reader, prime)
h.A = a.Int64()
}
return h
}
func _msb(n uint32) int {
r := 0
for ; n != 0; n >>= 1 {
r++
}
return r
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhuyuns/basic.git
git@gitee.com:zhuyuns/basic.git
zhuyuns
basic
basic
v0.0.57

搜索帮助

344bd9b3 5694891 D2dac590 5694891