## A c++ code for calculating pi value — by random number generation

Attn: Geek world

Finally I am successful in calculating pi value — within less than 0.3% error, by using random number generation. Although my computer needs some fixation on its compiler or path definition etc, there are very good online compilers click to run your c ++ code externally  which helps in testing and running c++ codes: try the given link.

### OUTPUT

```Computing the value of pi using std::rand()
Enter number of trials: 10000
Enter number of random (x,y) points per trial: 10
pi = 3.14376 +- 0.00519107
average - exact = 0.00216735
CPU time = 0.004027 secs```

Here is the code I found click to go to Buffalo-university physics website, original link broken  by searching a good deal on the web. Yes I did tinker around but only because my own compiler ( Turbo C++ on windows 10, 64 bits ) was throwing some exceptions on the included headers.

```//This a c++ code that computes the value of pi within a 0.3 % error. #include #include #include #include //#include using namespace std;`````` double pi_estimate(const unsigned long points) { unsigned long hits = 0; for (unsigned long i = 0; i < points; i++) { double x = rand() / (RAND_MAX + 1.0); double y = rand() / (RAND_MAX + 1.0); if ( (x - 0.5)*(x - 0.5) + (y - 0.5)*(y - 0.5) < 0.25 ) ++hits; } return 4 * double(hits) / double(points); } `````` void measure_pi(const unsigned long trials,``````const unsigned long points, double& average, double& std_dev) { double sum = 0; double squared_sum = 0; for (unsigned long t = 0; t < trials; t++) { double pi = pi_estimate(points); sum += pi; squared_sum += pi * pi; } average = sum / trials; std_dev = squared_sum / trials - average * average; std_dev = sqrt(std_dev / (trials - 1)); } `````` int main() { //clrscr(); cout << " Computing the value of pi using std::rand()" << endl; unsigned long trials, points; cout trials; cout points; clock_t start_time = clock(); double average, std_dev; measure_pi(trials, points, average, std_dev); double secs = (clock() - start_time) / double(CLOCKS_PER_SEC); cout << " pi = " << average << " +- " << std_dev << '\n' << " average - exact = " << average - 4*atan(1.0) << '\n' << " CPU time = " << secs << " secs" << endl; //getch(); return 0; } ```