Today, I read my junior team-mate code and find this line

$number = rand(2,1000)*rand(2,1000);

This made me remember that’s same idea of my own in many years ago. Then I ask myself, is it good to generate a random number from 2 random numbers ?

So the main reason that he wrote this was making probability of same number at same time must be low. We can know that this will return a random number from 4 to 1000000. So why don’t we just do this ?

$number = rand(4,1000000);

This function will make probability lower than above function, because above function is commutative (AB = BA). So stay away from commutative function (+, *) when generate a random number.

Need more powerful ? Try Pseudorandom Number Generator (PRNG) !!