Table of Contents Previous Slide Next Slide

Software Development in the UNIX Environment
Sample C Program

Example C Program to Compute PI Using A Monte Carlo Method

Source code:

/* Program to compute Pi using Monte Carlo methods */

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define SEED 35791246

main(int argc, char* argv)
{
   int niter=0;
   double x,y;
   int i,count=0; /* # of points in the 1st quadrant of unit circle */
   double z;
   double pi;

   printf("Enter the number of iterations used to estimate pi: ");
   scanf("%d",&niter);

   /* initialize random numbers */
   srand(SEED);
   count=0;
   for ( i=0; i<niter; i++) {
      x = (double)rand()/RAND_MAX;
      y = (double)rand()/RAND_MAX;
      z = x*x+y*y;
      if (z<=1) count++;
      }
   pi=(double)count/niter*4;
   printf("# of trials= %d , estimate of pi is %g \n",niter,pi);
}



Monte Carlo techniques: use of random sampling techniques to solve mathematical or physical problems.

Command to compile and link : cc -o monte_pi monte_pi.c

Commands to compile and link in two steps:
1. cc -c monte_pi.c (this produces object file monte_pi.o)
2.cc -o monte_pi monte_pi.o (produces executable monte_pi)

Output of command 'ls -l monte_pi': 32 -rwxr-xr-x 1 sas user 12580 Oct 11 14:25 monte_pi

Output of command 'file monte_pi': ELF N32 MSB mips-4 dynamic executable (not stripped) MIPS - version 1

To run type: monte_pi

Results of running monte_pi:
azure 58% monte_pi
Enter the number of iterations used to estimate pi: 1000
# of trials= 1000 , estimate of pi is 3.044


Run the program using an input file:

Create a file called monte.input with the number interations (ex. 1000) on the first line.
Issue the command monte_pi < monte.input

To run the program monte_pi in the background with an input file:
monte_pi < monte.input&