字符串 GUID 的哈希代码为奇数或偶数的概率是多少?



GUID是一个23个字符的字符串,在JVM、机器、线程、进程等中都是唯一的。其哈希代码是根据Java String哈希代码定义计算的:http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#hashCode%28%29

如何计算哈希代码为奇数或偶数的概率?

31^x对于所有x都是奇数,因此唯一可以改变每个项的奇数/偶数的位是s[i]。因此,你需要知道每个项的s[i],因为只将其中一项从奇数更改为偶数就会改变结果的奇数/偶数。所以我认为最小的计算应该是:

s[0] + ... + s[n-1] // if odd, the hash will be odd, if even the hash will be even

edit只要重读你的问题,并意识到你所要求的是概率。概率为50/50(假设字符集中50%的字符对应于偶数整数)。没有关于字符串的信息将帮助您获得更好的概率估计,因为奇数/偶数对更改单个项过于敏感。

最新更新