Using the numbers 0-5 I need to write a perfect has function for 36 Student ID Strings with six characters and 3 integers (e.g. BYPLOK120).
The hash function looks something like as follows:
String [] studentID = ...
is 36 unique Strings in the format (xxx/yyy/zzz) where x and y are three letters from the students last and first names, respectively. z are 3 random numbers.
int hashTableSize = 37;`
int [] hashValue = new int[9];`
int [] weights = {1,0,5,4,3,2,5,1,2};
Weights is 9 numbers between 0-5. THIS IS THE PART I NEED TO FIGURE OUT - there are about 2 million combinations (5^9) and less than 10 will give you a perfect hash function.
for (int i = 0; i < hashTableSize; i++)
for (int j = 0; j < studentID[I].length; j++)
hashVal[i] += ( studentID[i].charAt(j) * weight[j] ) % hashTableSize;
I need the hash value of each string in the array to be unique (i.e. there are no collisions when inserting)
I had duplicate hash values as I could not find the unique array of weight integers.