Коллизии StringHash

Добавлен
Делаю нечто вроде SuperCustomValue (при помощи Hashtable).
В общем, мне необходимо добавить разные новые параметры юнитам для использования в триггерах.
В качестве названия параметра у меня выступает строка - для удобства. Она конвертируется в integer для использования в Hashtable при помощи StringHash.
И вот я подумал? Насколько такое возможно, что для двух разных строк эта функция вернёт одно и то же значение? Тогда вся моя система самоуничтожится :(
Не лучше ли использовать исключительно числовые ключи?

Принятый ответ

Не представляю при каких обстоятельствах ключи могут совпасть, кроме, собственно, введения одинаковых строк. В этой статье упоминается о строковых ключах. Лично я только строковые и использую и никакого дискомфорта не испытываю.
0
22
12 лет назад
0
Не представляю при каких обстоятельствах ключи могут совпасть, кроме, собственно, введения одинаковых строк. В этой статье упоминается о строковых ключах. Лично я только строковые и использую и никакого дискомфорта не испытываю.
Принятый ответ
0
14
12 лет назад
0
Дело в том, что чисел - integrer - 4 миллиарда с хвостом, строк - сколько угодно. По принципу Дирихле получаем, что коллизий не избежать.
Я хочу узнать, насколько вероятны подобные неприятности в бытовых условиях?
0
22
12 лет назад
0
Я, конечно, не математик и не программист, но предположение выставить рискну. Если каждому символу соответствует свой индивидуальный порядок чисел, то как может получится, что два разных символа разшифрируются одинаково? Следовательно, совпадений быть не может. К тому же, логично предположить, что если бы совпадение было возможно, то функции StingHash() не было бы вообще.
За два года практики я ни разу не встретил никаких проблем с этим ни у себя, ни в академии.
0
14
12 лет назад
0
StingHash() берёт не СИМВОЛ, а СТРОКУ.
Integer - число вполне себе не бесконечное.
0
22
12 лет назад
0
Чувствую, что сейчас меня засмеют. А разве строка не является скоплением (или как это правильно по-русски?) символов?
0
14
12 лет назад
0
Является. Но одно дело - сопоставить ОДНОМУ символу какое-то число, а другое дело - сопоставить число НАБОРУ СИМВОЛОВ.
Сейчас ещё приведу расчёты и всё норм будет)))
Чтобы оставить комментарий, пожалуйста, войдите на сайт.