神奇的魔法数字0x61c88647

来源JDK源码,产生的数字分布很均匀

用法代码如下。

# -*- coding: utf-8 -*-
HASH_INCREMENT = 0x61c88647


def magic_hash(n):
    for i in range(n):
        nextHashCode = i * HASH_INCREMENT + HASH_INCREMENT
        print nextHashCode & (n-1)

magic_hash(16)

 

posted @ 2016-02-01 10:40  jamesben  阅读(1499)  评论(0编辑  收藏  举报