#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main( ) {
int N_values[ ] = { 1000 , 10000 , 100000 } ;
int num_cases = sizeof ( N_values) / sizeof ( N_values[ 0 ] ) ;
int i, N, count;
double x, y, pi_estimate;
// Seed the random number generator
printf ( "Monte Carlo Estimation of π\n " ) ; printf ( "-------------------------------------\n " ) ;
for ( i = 0 ; i < num_cases; i++ ) {
N = N_values[ i] ;
count = 0 ;
for ( int j = 0 ; j < N; j++ ) {
x
= ( double ) rand ( ) / RAND_MAX
; // x in [0, 1) y
= ( double ) rand ( ) / RAND_MAX
; // y in [0, 1) if ( ( x * x + y * y) <= 1.0 ) {
count++;
}
}
pi_estimate = 4.0 * count / N;
printf ( "N = %-7d => Estimated π = %.6f\n " , N
, pi_estimate
) ; }
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPG1hdGguaD4KCmludCBtYWluKCkgewogICAgaW50IE5fdmFsdWVzW10gPSB7MTAwMCwgMTAwMDAsIDEwMDAwMH07CiAgICBpbnQgbnVtX2Nhc2VzID0gc2l6ZW9mKE5fdmFsdWVzKSAvIHNpemVvZihOX3ZhbHVlc1swXSk7CiAgICBpbnQgaSwgTiwgY291bnQ7CiAgICBkb3VibGUgeCwgeSwgcGlfZXN0aW1hdGU7CgogICAgLy8gU2VlZCB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwoKICAgIHByaW50ZigiTW9udGUgQ2FybG8gRXN0aW1hdGlvbiBvZiDPgFxuIik7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIGZvciAoaSA9IDA7IGkgPCBudW1fY2FzZXM7IGkrKykgewogICAgICAgIE4gPSBOX3ZhbHVlc1tpXTsKICAgICAgICBjb3VudCA9IDA7CgogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTjsgaisrKSB7CiAgICAgICAgICAgIHggPSAoZG91YmxlKXJhbmQoKSAvIFJBTkRfTUFYOyAvLyB4IGluIFswLCAxKQogICAgICAgICAgICB5ID0gKGRvdWJsZSlyYW5kKCkgLyBSQU5EX01BWDsgLy8geSBpbiBbMCwgMSkKICAgICAgICAgICAgaWYgKCh4ICogeCArIHkgKiB5KSA8PSAxLjApIHsKICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHBpX2VzdGltYXRlID0gNC4wICogY291bnQgLyBOOwogICAgICAgIHByaW50ZigiTiA9ICUtN2QgPT4gRXN0aW1hdGVkIM+AID0gJS42ZlxuIiwgTiwgcGlfZXN0aW1hdGUpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==