Correct, no clashes.
If performance was to matter, time/location based variant is the most
efficient, but it seldom matters all that much.
From theoretical perspective I think random-based variant is probably
the most sensible one, when used with SecureRandom(). However, many
find it intuitively hard to trust statistics that all but guarantee no
collisions, and find it better to use time/location variant.
Name-based variant is just hashing given String, so it can work too
but one might as well just use SHA-1 or other hashing mechanism.
-+ Tatu +-