Good point @ Durendal (+1)
However, I have one more thought with random circles.
When you generate a random distance with this code:
double distance = random( width/2 );
you produce from even distribution . I mean, all values ββfrom 0 to width/2 have the same probability . But a circle with a radius of 3*r has 9 times the area, and then a circle with a radius of r . So, the smaller the distance from the center, the greater the density we see.
Thus, the generated cloud does not have a uniform density , as you can see in the first image. 
But if you change the probability density function so that larger values ββare less likely than smaller ones, you can get a uniformly generated cloud.
Such a simple modification:
double distance = Math.sqrt( random( width/2 * width/2 ) );
creates more evenly distributed circles, as you can see in the second image. 
Hope this can be helpful.
source share