实施Flajolet和Martin’;python中的s算法
下面是我为实现而编写的代码。我使用了实施Flajolet和Martin’;python中的s算法,python,algorithm,hash,probability,flajolet-martin,Python,Algorithm,Hash,Probability,Flajolet Martin,下面是我为实现而编写的代码。我使用了Jenkins散列函数来生成数据的32位散列值。该程序似乎遵循了算法,但偏离了20%左右。我的数据集由200000多条独特记录组成,而程序输出的独特记录约为160000条。请帮助我理解我所犯的错误。哈希函数是根据实现的 如果在Python2中运行此操作,则计算A的除法可能会导致A更改为整数 如果是这种情况,您可以尝试更改: A = sumIx / self.nmap 到 谢谢你,彼得。将sumIx转换成float确实可以提供精确的输出。仍然存在一个问题——我
Jenkins散列函数
来生成数据的32位散列值
。该程序似乎遵循了算法,但偏离了20%左右。我的数据集由200000多条独特记录组成,而程序输出的独特记录约为160000条。请帮助我理解我所犯的错误。哈希函数是根据实现的
如果在Python2中运行此操作,则计算A的除法可能会导致A更改为整数 如果是这种情况,您可以尝试更改:
A = sumIx / self.nmap
到
谢谢你,彼得。将sumIx转换成float确实可以提供精确的输出。仍然存在一个问题——我的程序估计的不同值的数量超过了我使用的几乎每个数据集的唯一值的实际数量。我认为这不应该如此。如果您能帮我解决这个错误,我将不胜感激。为什么不使用这个算法的最新版本HyperLogLog呢?有一个电话,谢谢。我去看看。
A = sumIx / self.nmap
A = float(sumIx) / self.nmap