Skip to content

Instantly share code, notes, and snippets.

@onemouth
Created July 18, 2019 11:13
Show Gist options
  • Save onemouth/ba823afd2d8cb61677fe172f829166dd to your computer and use it in GitHub Desktop.
Save onemouth/ba823afd2d8cb61677fe172f829166dd to your computer and use it in GitHub Desktop.
int32_t JumpConsistentHash(uint64_t key, int32_t num_buckets) {
int64_t b = -1, j = 0;
while (j < num_buckets) {
b = j;
key = key * 2862933555777941757ULL + 1;
j = (b + 1) * (double(1LL << 31) / double((key >> 33) + 1));
}
return b;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment