0
Normal distribution in BOOST
#include <boost/math/distributions/normal.hpp> // for normal_distribution
using boost::math::normal; // typedef provides default type is double.
#include <iostream>
using std::cout; using std::endl; using std::left; using std::showpoint; using std::noshowpoint;
#include <iomanip>
using std::setw; using std::setprecision;
#include <limits>
using std::numeric_limits;
int main()
{
// Generate a normal random number
normal s; // (default mean = zero, and standard deviation = unity)
cout << "Standard normal distribution, mean = "<< s.mean()
<< ", standard deviation = " << s.standard_deviation() << endl;
// Calculate PDF
cout << "Probability distribution function values" << endl;
cout << " z pdf " << endl;
cout.precision(5);
for (double z = -10; z < 10; z+= 1)
{
cout << left << setprecision(3) << setw(6) << z << " "
<< setprecision(17) << setw(12) << pdf(s, z) << endl;
}
cout.precision(6); // default
// Calculate CDF
cout << "Integral (area under the curve) from - infinity up to z " << endl;
cout << " z cdf " << endl;
for (double z = -5; z < 5; z+= 1)
{
cout << left << setprecision(3) << setw(6) << z << " "
<< setprecision(17) << setw(12) << cdf(s, z) << endl;
}
cout.precision(6); // default
// Calculate quantile
cout << "95% of area has a z below " << quantile(s, 0.95) << endl;
return 0;
}
Post a Comment