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

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

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++ ) {
      
      y = A + ( B - A ) * ( i + drand48() ) / double( NUM_SAMPLES);
      I += y * y;
    }
    
    double p = 1 / ( B - A );
    I = I / ( p * double( NUM_SAMPLES ) );
    
    cout << fabs( VALUE - I ) << endl;

  }
  
}


