Sto cercando una funzione di hashing ad alta velocità con una buona distribuzione (cioè quasi uniforme) da utilizzare in un'implementazione della tabella hash.Algoritmo di hash per l'implementazione della tabella hash
La tabella hash verrà utilizzata esclusivamente per la memorizzazione di valori con un numero intero.
Posso usare solo i bit più bassi del numero intero come hash?
ad es. Int chiave = n & 15; e creare un array con 16 slot per memorizzarli.
Qualche consiglio?
Non esiste una funzione di cancellatura perfetta. Tuttavia, se vuoi alcuni algoritmi con il corrispondente codice sorgente, vedi qui: http://partow.net/programming/hashfunctions/index.html –
Prendere i bit più bassi è probabilmente la cosa peggiore da fare. (ma: tutto dipende dall'intervallo di valori che ci si aspetta dalla chiave int) Prova a mischiare anche i bit superiori, o moltiplica con un numero abbastanza grande (dispari, primo). Sapere cosa aspettarsi e misurarlo. – wildplasser
Posta il tuo commento come risposta e lo accetterò. –