MATLAB: Generate random circles in the square box with different diameters

circlegeneraterandom

I was able to generate random circles inside the square box of dimension L=1 with the same diameter without overlapping, where X and Y are between -0.5 to 0.5.
Now, I want to generate random circles with 3 different diameters and I need to save the location of X,Y and diameter for each circle. It would be nice if we have the same number of circles per each diameter.
If you have any idea how to do so, please help me. Thanks

Best Answer

If you have k circles, then you can create three different areas (and thus different diameters) using:
k = 30;
X = rand(k,1) - 0.5;
Y = rand(k,1) - 0.5;
a = randi([1 3],k,1); %Random integers from discrete U([1,3])
s = scatter(X,Y,a);
If you want the same number of each diameter:
n = k/3; % May need to take floors if 3 is not a divisor of k
a = [5*ones(n,1); 10*ones(n,1); 15*ones(n,1)]; % Equal number of fives, tens, and fifteens
a = a(randperm(k)); % Shuffle the vector
s = scatter(X,Y,a);
randperm(k) permutes the integers 1:k, so I use this to randomly shuffle the values, although arguably if you were to specify the first ten observations were to be labeled size 5, and the next ten size 10, ... the (x,y) values are still random and there is no real need to do the permutation.