Good hash functions like pkphash or buzhash will allow you to take a few random bits from the real world and create thirty-two or sixty-four bits of well distributed information to use as the seed for the random number generator to create a random starting position. Just hash the numbers returned from the real world information and use the resulting hash as the random seed. Is there more information in this seed? Not really, but it is difficult to go backwards through the function, especially buzhash, to determine what space to search, so it effectively provides more `new' information.
Hash functions like buzhash can also provide one-way functions to use for identification. It is easy and efficient to compare two numbers; it is much slower to compare character strings. One can hash a character string and create a characteristic id. Then searching is done by comparing the hash id, rather than comparing the strings themselves.
Some algorithms depend on unordered input for their performance. One can hash input keys and process the hash-id rather than the original key to gain good performance. For example binary search trees depend on random arrivals for log n performance, if keys are ordered they do no better than a linked list. Hashing the keys always gives log n performance.
Of course two strings can always map to the same hash result, for all
algorithms you must resolve conflicts either by doing the string comparison
as the final step, or by making sure there are no conflicts in the first
place.