Listing 9
#include <random>
#include <array>
#include <algorithm>
#include <iostream>
using std::tr1::ranlux4_01; // predefined generator
using std::tr1::binomial_distribution;
using std::tr1::array;
using std::max_element; using std::cout;
const char *stars = "****************************************";
typedef ranlux4_01 gen_t;
typedef binomial_distribution<unsigned> dist_t;
int main()
{ // draw histogram of binomial distribution
const int tosses = 30;
const int trials = 100000;
array<int, tosses + 1> bins = {0};
int width = strlen(stars);
gen_t gen;
dist_t dist(tosses);
for (int i = 0; i < trials; ++i)
{ // generate number of heads for this trial
int heads = dist(gen);
++bins[heads];
}
int maximum = *max_element(bins.begin(), bins.end());
double factor = double(width) / maximum;
for (int i = 0; i < bins.size(); ++i)
cout << (stars + width - int(bins[i] * factor)) << '\n';
return 0;
}