// This program calculates "pi" using Monte Carlo method. // Think about 1/4 circle (radius=1) fitted in a square (length=1). // The areas of 1/4 circle and square are (pi/4) and (1), respectively. // If 100 random numbers are scattered, the quantity of scattered random numbers is proportional to the area of each shape. // So, (pi/4) : 1 = in : total (in=the amount of random numbers scattered inside the 1/4 circle, total=total amount of scattered random numbers) // Now, pi can be calculated as (pi) = 4(in) / total #include <stdio.h> #include <stdlib.h> #include <time.h> // library to use "srand" #define NUM 1000000000 // As this increases, we will get more accurate pi value. double ran(void); void main(void) { double x,y,pi; int i, in=0; srand(time(NULL)); // change seed value for random number generation for(i=1; i<=NUM; i++){ x=ran(); y=ran(); if(x*x+y*y <=1) in++; } pi=(double) 4*in/NUM; printf("pi = %f\n",pi); //return 0; getchar(); } // function for generating random numbers between 0 and 1 double ran(void){ return (double) rand()/RAND_MAX; }
Mar 2, 2013
[C/C++] pi calculation using Monte Carlo method
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment