Generating random points uniformly in a circle without rejection is at least mildly more interesting, as you need to scale one factor by a square root:
const r = sqrt(random()) * radius;
const theta = random() * TAU;