A C++ logo

A c++ code for calculating pi value.

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 Informationclick 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 Informationclick 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.

A C++ logo
A C++ logo

Code

Note probably some of the directives are missing — will fix anon — as soon as I get hold of the folder.

//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;
}

I am an experimental particle physicist, traveler, teacher, researcher, scientist and communicator of ideas. I am a quarkist and a bit quirky ! Hypothesis non fingo, eppur si muove, dubito cogito ergo sum are things that turn me on ! Researcher in experimental high energy physics (aka elementary particle physics; like “quarks, leptons & mesons and baryons”) … Teacher of Physics (and occasionally chemistry and maths) Blogger (check my website; mdashf.org) ! Love to read read and read but only stuff that interest me. Love to puff away my time in frivolities, just dreaming and may be thinking. Right now desperately trying to streamline myself.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

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

Google photo

You are commenting using your Google 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 )

Connecting to %s