it will not have an even distribution. Assuming random() distrubutes values evenly, there will be a lot of values in areas near the center and few in areas near the edge.
My suggestion (assuming a circle at the origin with radius 1):
x = random(2) - 1;
x *= abs(x); // The approximation I gave should be close enough. Mess with it if you want. The goal is an even distribution of points. When testing this one, watch for uneven distribution on the sides and middle.
y = (random(2) - 1) * sqrt(1 - x * x);
that's an interesting technique. never seen it before. just as you said, it favors the middle a lot =/
i set up a test. the green dots are distributed most evenly.
draw_text(5,35,"maybe not even")