Jenkins哈希函数在Mathematica中的实现

问题描述

我想要一个内射函数h(Jenkins hash),该函数可以接收自然数并返回64个等概率位的序列。

例如h [1234567890] = {1,1,1,...,0}。

在Java中可能的实现是

   \\ Jenkins hash function

    public static final long jenkins(final int x) {

    long a,b,c;

    /* Set up the internal state */
    a = 1000 + x;
    b = 1000;
    c = 0x9e3779b97f4a7c13L; /* the golden ratio; an arbitrary value */

    a -= b; a -= c; a ^= (c >>> 43);
    b -= c; b -= a; b ^= (a << 9);
    c -= a; c -= b; c ^= (b >>> 8);
    a -= b; a -= c; a ^= (c >>> 38);
    b -= c; b -= a; b ^= (a << 23);
    c -= a; c -= b; c ^= (b >>> 5);
    a -= b; a -= c; a ^= (c >>> 35);
    b -= c; b -= a; b ^= (a << 49);
    c -= a; c -= b; c ^= (b >>> 11);
    a -= b; a -= c; a ^= (c >>> 12);
    b -= c; b -= a; b ^= (a << 18);
    c -= a; c -= b; c ^= (b >>> 22);
    
    return c;
}

如何在Mathematica中实现呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)