Welcome to WebmasterWorld Guest from

Forum Moderators: coopster & jatar k

Message Too Old, No Replies

How random is rand()?



6:45 am on Dec 5, 2006 (gmt 0)

10+ Year Member


I'm trying to make unique IDs for my users, so I'm concatenating their IP address with the time of their first access.



I would imagine this this would give a pretty good unique ID, but then I then I saw an unlikely flaw:

A "unique" id would be given twice if one computer had two first requests at the same time. (ie: If the user has FF and IE opened and accessed the site within the same second)

To remedy this, I decided to concatenate a random number.


That way, in this very unlikely event, there would only be a 1/10000 chance of two equal "unique" IDs.

However, I remembered that rand is only a pseudo random number. I'm thinking that if it's based on time, then that defeats the purpose of adding the random number, since the two times would be the same.

So I'm wondering, how random is rand(), and should I add the random number to the unique IDs?



9:09 am on Dec 5, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member

You needn't worry - the rand is based on microsecond, not second


It's based on Mersenne Twister [math.sci.hiroshima-u.ac.jp]

Moreover the seed is also random, so it would require running both instances synchronized.

Therefore your code should run smoothly.


PS. There's no problem in checking ;)


4:14 pm on Dec 5, 2006 (gmt 0)

5+ Year Member

If you are really worried about a collision, then you could just use a counter. Start it at 1 and each new user could increment by one. When you get to 10, 100, or 1000 you could start over.


6:24 pm on Dec 5, 2006 (gmt 0)

10+ Year Member

You seem to be using a very convoluted method of doing something already built in to PHP:

Why do you need this unique ID, anyway - if you are storing this info in a database, just use a numeric auto increment column as the ID.


Featured Threads

Hot Threads This Week

Hot Threads This Month