源码模拟试验
说明:不考虑论文《HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm》中的常数无偏估计修正因子,以尽量简单的方式模拟,而且从结果中可以看出分桶数据(数组)大小会影响HyperLogLog算法的精确度,也因此反过来可以理解常数无偏估计因子需要根据分桶数据(数组)大小适时调整。
1 | import java.util.concurrent.ThreadLocalRandom; |
试验结果
1 | 200000 16384.000 0.918 #注意:桶内随机数太少,不满足随机性和足够的样本容量 |