#include <iostream>
#include <random>
#include <chrono>
double monte_carlo_simulation(int iterations) {
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0, 1.0);
int inside_circle = 0;
for (int i = 0; i < iterations; ++i) {
double x = distribution(generator);
double y = distribution(generator);
if (x * x + y * y <= 1) {
++inside_circle;
}
}
return 4.0 * inside_circle / iterations;
}
int main() {
int iterations = 1000000;
auto start = std::chrono::high_resolution_clock::now();
double pi_estimate = monte_carlo_simulation(iterations);
auto end = std::chrono::high_resolution_clock::now();
std::cout << "Estimación de Pi: " << pi_estimate << "\n";
std::cout << "Tiempo de ejecución: "
<< std::chrono::duration<double>(end - start).count() << " segundos\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8Y2hyb25vPgoKZG91YmxlIG1vbnRlX2NhcmxvX3NpbXVsYXRpb24oaW50IGl0ZXJhdGlvbnMpIHsKICAgIHN0ZDo6ZGVmYXVsdF9yYW5kb21fZW5naW5lIGdlbmVyYXRvcjsKICAgIHN0ZDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3RyaWJ1dGlvbigwLjAsIDEuMCk7CgogICAgaW50IGluc2lkZV9jaXJjbGUgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyArK2kpIHsKICAgICAgICBkb3VibGUgeCA9IGRpc3RyaWJ1dGlvbihnZW5lcmF0b3IpOwogICAgICAgIGRvdWJsZSB5ID0gZGlzdHJpYnV0aW9uKGdlbmVyYXRvcik7CiAgICAgICAgaWYgKHggKiB4ICsgeSAqIHkgPD0gMSkgewogICAgICAgICAgICArK2luc2lkZV9jaXJjbGU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDQuMCAqIGluc2lkZV9jaXJjbGUgLyBpdGVyYXRpb25zOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBpdGVyYXRpb25zID0gMTAwMDAwMDsKCiAgICBhdXRvIHN0YXJ0ID0gc3RkOjpjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CiAgICBkb3VibGUgcGlfZXN0aW1hdGUgPSBtb250ZV9jYXJsb19zaW11bGF0aW9uKGl0ZXJhdGlvbnMpOwogICAgYXV0byBlbmQgPSBzdGQ6OmNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKCiAgICBzdGQ6OmNvdXQgPDwgIkVzdGltYWNpw7NuIGRlIFBpOiAiIDw8IHBpX2VzdGltYXRlIDw8ICJcbiI7CiAgICBzdGQ6OmNvdXQgPDwgIlRpZW1wbyBkZSBlamVjdWNpw7NuOiAiCiAgICAgICAgICAgICAgPDwgc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oZW5kIC0gc3RhcnQpLmNvdW50KCkgPDwgIiBzZWd1bmRvc1xuIjsKCiAgICByZXR1cm4gMDsKfQo=