Do czego potrzebne są Ci tablice? W ogóle ich nie potrzebujesz. Druga sprawa to użycie generatora rand(), który zupełnie nie nadaje się do Monte Carlo, gdyż zafałszowuje wyniki (nie generuje akceptowalnych losowych wartości). Użyj uniform_real_distribution jak w załączonym przykładzie:
#include <iostream>
#include <random>
using namespace std;
int main()
{
const int resolution {10000000};
double x {0.0} , y {0.0};
double radius {0.5};
int match {0};
random_device rd;
mt19937 mt(rd());
uniform_real_distribution<double> dist(0.0,2.0*radius);
for( int i=0 ; i<resolution ; ++i )
{
x = dist(mt) - radius;
y = dist(mt) - radius;
if((x*x)+(y*y)<radius*radius) ++match;
}
cout << (static_cast<double>(match)/static_cast<double>(resolution))*4.0;
return 0;
}