//========================================================================
//
// Stratified importance sampling
//
//
//
//
//
//
//
//
//
//========================================================================

#include <stdlib.h>
#include <iostream.h>
#include <math.h>

int NUM_SAMPLES = 10;
double A = 0.0;
double B = 2.0;
double VALUE = 8.0 / 3.0;

int main( void )
{

  for( int NUM_SAMPLES = 1; NUM_SAMPLES < 100000; NUM_SAMPLES++ ) {
    
    double I = 0.0;
    double y = 0.0;
    double xi = 0.0;
    
    for( int i = 0; i < NUM_SAMPLES; i++ ) {

      xi = 2.0 * sqrt( ( i + drand48() ) / double( NUM_SAMPLES ) );
      I += 2.0 * xi;

    }
    
    I = I / double( NUM_SAMPLES );
    
    cout << fabs( VALUE - I ) << endl;
    
  }

}


