Какова вероятность того, что хеш-код строки GUID будет нечетным или четным? - PullRequest
0 голосов
/ 20 марта 2012

GUID - это 23-символьная строка, уникальная для JVM, машин, потоков, процессов и т. Д. Его хеш-код вычисляется в соответствии с определением хеш-кода Java String: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#hashCode%28%29

Как можно вычислитьвероятность того, что хеш-код будет нечетным или четным?

1 Ответ

1 голос
/ 20 марта 2012

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% символов в наборе символов соответствуют четным целым числам).Никакая информация о строке не поможет вам получить лучшую вероятностную оценку, так как нечетность / четность слишком чувствительна к изменению отдельных терминов.

...