25 lines
872 B
Markdown
25 lines
872 B
Markdown
# Dev Docs
|
|
|
|
I've scaffolded but it I feel it makes more sense to just have a one file impl first in some .cpp file
|
|
and take it from there. So off we go to top level main.cpp
|
|
|
|
There is an original paper but I'm reading off from wiki for now https://en.wikipedia.org/wiki/Bloom_filter
|
|
|
|
## Making k hashes
|
|
|
|
This was the first problem. Just like open addressing hash tables do it.
|
|
|
|
Idea is you take 2 hash functions and then use them as
|
|
```
|
|
h_i(x) = ( h1(x) + i.h2(x) ) mod m
|
|
```
|
|
Then if I say that `gcd(h2(x),m) = 1` then thi will loop over all residues and I have a uniform spread over the range m.
|
|
|
|
I can't do h(x) + i as that's a bad idea since it'll be consecutive same with i . h(x) as there will be just equally spaced strides.
|
|
|
|
This double hashed func almost behaves like a random number generator.
|
|
|
|
## std::hash
|
|
|
|
you make a hasher object and them immediately call it
|