Skip to content
Advertisement

Why rand() isn’t really random?

I wanted to put random points on an image (stars in space for some little fun side project)

I have this simple script.

JavaScript

Keep in mind this is just for testing, that is why I put 100000 in for loop so it shows the pattern I noticed emerging. We have 1 million pixel to use, still random X and Y creates this pattern instead: enter image description here

So it is far from random. I know rand is not real random, that is why it isn’t good for cryptography. But I find no information about how it works and what should I do to avoid patterns like this.

Advertisement

Answer

Linear congruential random number generators (which is what PHP rand uses) will always display autocorrelation effects on an x-y plot.

You will have better results with mt_rand. This is a Mersenne Twister generator.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement