【发布时间】:2014-07-10 12:11:20
【问题描述】:
我正在用 Java 编写一个 minhashing 算法,它要求我生成任意数量的随机散列函数(在我的例子中是 240 个散列函数),并通过它运行任意数量的整数(目前为 2000 个)。
为了做到这一点,我一直在为 240 个散列函数中的每一个生成随机数 a、b 和 c(范围从 1 到 2001)。然后,我的哈希函数返回 h = ((a*x) + b) % c,其中 h 是返回值,x 是通过它的整数之一。
这是随机散列的有效实现,还是有更常见/可接受的方法?
这篇文章问了一个类似的问题,但我仍然对答案的措辞感到有些困惑:Minhash implementation how to find hash functions for permutations
【问题讨论】:
-
计算机从来都不是随机的。他们是
Pseudorandom。这听起来像是一个学术问题,因此可能值得注意其中的区别。 -
还可以尝试
bottom-k散列,您只使用一个散列函数,但保留k的最小值,而不是只使用一个。
标签: java algorithm hash locality-sensitive-hash minhash