• GUID and SQL Server function Newid() create globally unique identifiers. This is not they same as random and likely does not have very good random properties.

    One digit (16 bits) is used to id the algorithm. I'm sure a good many bits represent the time of generation.

    If your using SQL Server 2008, then CRYPT_GEN_RANDOM(n) (n= number of digits), creates a cryptographically secure pseudo random number. These are usually the best available without a true hardware random number generator and they do execute for each row, unlike rand()

    If your on an earlier version, but have 2008 available consider a linked query to obtain the numbers, or write a custom CLR ( see System.Security.Cryptography.RNGCryptoServiceProvider. )