Distributing points uniformly in a unit circle
You can paramterize a circle via a radius and the angle. Therefore, for the  cycle with radius r around (h,w) you can calculate the x and y coordinates with the following equations

x = h + r * sin(theta)
y = w + r *cos(theta)

Therefore your code should look like that
random_device R;    
mt19937 G(R());   
uniform_real_distribution&lt;double&gt; D(0,360);

for(int i=0; i&lt;N; i++) {
    angle = D(G);
    x = sin(angle);
    y = cos(angle);
}

UPDATE
Toby is right, that this only adds points to the unit circle, rather than the full area of the circle. The solution is rather simple, add a random variable for the radius
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
mt19937 rngAngle(seed);  
seed = std::chrono::system_clock::now().time_since_epoch().count(); 
mt19937 rngRadius(seed);   
uniform_real_distribution&lt;double&gt; angleDistribution(0,360);
uniform_real_distribution&lt;double&gt; radiusDistribution(0,1);

for(int i=0; i&lt;N; i++) {
    angle  = angleDistribution(rngAngle);
    radius = radiusDistribution(rngRadius);
    x = radius * sin(angle);
    y = radius * cos(angle);
}

As you have seen, I used some better names too and seeded both random number generators independently with the current time.