Mieszanie zestawu liczb całkowitych w sposób niezależny od kolejności
Chcę mieszać zestaw liczb całkowitych w taki sposób, że kolejność liczb całkowitych nie ma wpływu na obliczoną wartość skrótu. to znaczyH([32224,12232,564423]) == H([564423,32224,12232])
.
Liczba unikalnych zestawów będzie się wahać w granicach kilku milionów. Prędkość jestbardzo ważne, ale muszę znać górną granicę kolizji z wybranym podejściem.
Wikipedia ma dobrą sekcjęwektory mieszające, ale nie rozumiem matematyki za tym, aby z ufnością wdrożyć je w kodzie. Byłbym wdzięczny, gdyby ktoś mógł wyjaśnić matematykę związaną z jakimś kodem. W idealnej sytuacji chciałbym, aby końcowy hash miał 32 bity. Jeśli jest to jakikolwiek użytek - wdrożę to w Javie.
Aktualizacja: Szczególnie staram się unikać sortowania liczb całkowitych w zestawie ze względu na wydajność (działa na wielu takich zestawach).