#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// Function to estimate Pi using Monte Carlo
double monteCarloPi(int N) {
int inside = 0;
for (int i = 0; i < N; i++) {
double x = (double)rand() / RAND_MAX; // random [0,1)
double y = (double)rand() / RAND_MAX;
if (x*x + y*y <= 1.0) {
inside++;
}
}
return 4.0 * inside / N;
}
int main() {
srand(time(0)); // seed random generator
int Ns[] = {1000, 10000, 100000};
for (int i = 0; i < 3; i++) {
int N = Ns[i];
double pi_est = monteCarloPi(N);
cout << "N = " << N << " -> Estimate of Pi = " << pi_est << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4gICAKI2luY2x1ZGUgPGN0aW1lPiAgICAgCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVuY3Rpb24gdG8gZXN0aW1hdGUgUGkgdXNpbmcgTW9udGUgQ2FybG8KZG91YmxlIG1vbnRlQ2FybG9QaShpbnQgTikgewogICAgaW50IGluc2lkZSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGRvdWJsZSB4ID0gKGRvdWJsZSlyYW5kKCkgLyBSQU5EX01BWDsgLy8gcmFuZG9tIFswLDEpCiAgICAgICAgZG91YmxlIHkgPSAoZG91YmxlKXJhbmQoKSAvIFJBTkRfTUFYOwogICAgICAgIGlmICh4KnggKyB5KnkgPD0gMS4wKSB7CiAgICAgICAgICAgIGluc2lkZSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiA0LjAgKiBpbnNpZGUgLyBOOwp9CgppbnQgbWFpbigpIHsKICAgIHNyYW5kKHRpbWUoMCkpOyAvLyBzZWVkIHJhbmRvbSBnZW5lcmF0b3IKICAgIAogICAgaW50IE5zW10gPSB7MTAwMCwgMTAwMDAsIDEwMDAwMH07CiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgaW50IE4gPSBOc1tpXTsKICAgICAgICBkb3VibGUgcGlfZXN0ID0gbW9udGVDYXJsb1BpKE4pOwogICAgICAgIGNvdXQgPDwgIk4gPSAiIDw8IE4gPDwgIiAtPiBFc3RpbWF0ZSBvZiBQaSA9ICIgPDwgcGlfZXN0IDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K