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.

radius=100
draw_set_color(c_black)
draw_circle(200,110,radius,1)
draw_circle(440,110,radius,1)
draw_circle(320,300,radius,1)
draw_set_color(c_blue)
draw_text(5,5,"evenly placed")
repeat 2000
{
x=random(2)-1
x*=abs(x)
y=(random(2)-1)*sqrt(abs(1-x*x))
x*=radius
y*=radius
draw_circle(200+x,110+y,2,0)
}
draw_set_color(c_red)
draw_text(5,35,"maybe not even")
repeat 2000
{
a=random(360)
r=random(radius)
x=lengthdir_x(r,a)
y=lengthdir_y(r,a)
draw_circle(440+x,110+y,2,0)
}
draw_set_color(c_green)
draw_text(5,55,"perfect")
repeat 2000
{
do
{
x=-radius+random(radius*2)
y=-radius+random(radius*2)
}
until point_distance(0,0,x,y)<radius
draw_circle(320+x,300+y,2,0)
}