Compute pi using random numbers

Imagine a square in the plane from coordinates (-1, -1)  to (1,1), and also imagine a circle having radius 1 and origin in (0,0).

Generate a random number x in interval (-1, 1), and a random number y also in (-1, 1). What is the probability that (x, y) is inside the circle?

I hope you agree that the probability is the area of the circle over the area of the square: \pi \over 4.

This means that if we randomly generate many points inside the square the number of the points inside the circle will be \pi \over 4 multiplied by the total number of points generated.

Based on this idea, following C code will compute an approximation of \pi :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
srand(0);
long maxIterarions = LONG_MAX/200;
double inCircle = 0.0;
for (long i = 0; i < maxIterarions; i++)
{
//generate x in interval [-1, 1]
double x = -1 + 2 * ( ( (double)rand() ) / RAND_MAX );
//generate y in interval [-1, 1]
double y = -1 + 2 * ( ( (double)rand() ) / RAND_MAX );
//count if point (x,y) is inside the unit circle
if ( x*x + y*y  <= 1 )
{
inCircle++;
}
}
printf(“pi=%lf\n”, (4*inCircle)/maxIterarions);
getch();
return 0;
}
Advertisements
This entry was posted in Math. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s