#include <iostream>
#include <random>
#include <ctime>
#include <iomanip>

int main()
{
    const int nrolls = 526 ;
	const int divisor = 9 ;
	const int ntrials = 4 ;
	std::mt19937 generator( std::time(nullptr) ); // mersenne twister

    std::cout << "bernoulli distribution - deadtime distortion (divided sample)\n\n" ;
    std::cout << std::fixed << std::setprecision(2) ;

    for( double p = 0.1 ; p < 0.95 ; p += 0.1 )
    {
        for( int n = 0 ; n < ntrials ; ++n )
        {
            std::cout << "bernoulli (" << p << ") x " << nrolls << '/' << divisor << ": " ;
            std::bernoulli_distribution distribution(p);

            int count = {0} ;  // count number of trues
            for( int i=1 ; i <= nrolls ; ++i )
                if( distribution(generator) && i%divisor == 0 ) ++count ;

            std::cout << std::setw(3) << count<< " (" << std::setw(5)
                      << count * 100.0 / ( nrolls / divisor ) << "%)\n" ;
        }
        std::cout << '\n' ;
    }
}
