The general idea I was after was using Ids in databases or other stores that can be used by phone or printed material, not a giant 16 byte guid.
Is it possible to make a custom unique id generator in a database, or would it be client side (which would be 2 possible reads first)? The answer I was after was rcar's, however Sklivvz's is also the answer to the 2nd part (an alternative). I really asked two questions here so I was cheating. UPDATE: Here's the resulting article from this question What is the probability of a clash each time, and can anyone suggest a better way of doing it? static Random _random = new Random() īuilder.Append((char)_random.Next(97,123)) īuilder.Append(_random.Next(0,9).ToString()) Ĭonsole.WriteLine("clash: (" +n+ ")" +builder.ToString()) On average I get 40-50 clashes per million, however bare in mind the uid wouldn't be generated a million times at once, but probably only around 10-1000 times a minute. I'm interested in the clash rate and if the code below is a realistic simulation of anticipated clash rate you'd get from generating a hash. "According to my calculations captain", that's 6 mutually exclusive events, although calculating the probability of a clash gets a little harder than P(A or B) = P(A) + P(B), as obviously it includes numbers and from the code below, you can see it works out whether to use a number or letter using 50/50. The simple uid I'm generating is - 6 characters: either a lowercase letter (a-z) or 0-9. I'm writing a small article on humanly readable alternatives to Guids/UIDs, for example those used on TinyURL for the url hashes (which are often printed in magazines, so need to be short).