Reply to Re: How to Gnerate a Random ID Number

Your name:

Reply:


Posted by Gert-Jan Strik on 06/14/07 19:05

Hugo Kornelis wrote:
>
> On Mon, 11 Jun 2007 01:24:34 +0200, Gert-Jan Strik wrote:
>
> >> And isn't newid() more or less the same (using a different seed and a
> >> different algorithm to compute the next value, but still computing some
> >> formula with a seed as input to get at a pseudo-random value?)
> >
> >I doubt it. The newid() value has to be globally unique, which suggests
> >the function should never produce an 'old' value ever again.
>
> Hi Gert-Jan,
>
> Well, that definitely rules out newid() as a "good" pseudo random number
> generator, then. A sequence of random numbers should have a chance to
> hold duplicates.

Good observation. And so you correctly concluded that RAND() also does
not do this.

> Of course, checksum(newid()) will include duplicates, but only someone
> privy to the implementation details of both newid() and checksum() can
> determine wether the non-repetition of newid() values affects the
> randomness of checksum(newid()). If I had a need for a good RNG, I'd
> look further!

Should you find a better (and practical) method, please share it :-)

> >When using rand(), you could expect the same values after a reseed, or
> >an SQL Server restart. The newid() function should not have such
> >behavior.
>
> I wasn't aware that the seed is reset on server restart. Is this
> documented anywhere, or just based on personal observation?

Oops... My apologies, that was a bit thoughtless of me. I merely
assumed the seed would be reset upon restart. However, I just tested
this on SQL Server 2005, and the seed does not seem to be reset (or at
least not to the same value).

Gert-Jan

> Anyway, it's
> easy to fix it by putting
> SET @dummy = RAND(DATEDIFF(s, '20000101', CURRENT_TIMESTAMP))
> in a stored procedure and run it on startup.
>
> --
> Hugo Kornelis, SQL Server MVP
> My SQL Server blog: http://sqlblog.com/blogs/hugo_kornelis

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация