Skip to content

Instantly share code, notes, and snippets.

@crdueck
Created August 6, 2014 01:35
Show Gist options
  • Save crdueck/0112fb7f101020512b88 to your computer and use it in GitHub Desktop.
Save crdueck/0112fb7f101020512b88 to your computer and use it in GitHub Desktop.
jump consistent hash
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