#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(0));
 
    int n=6000;
 
    double *y =new double[n],*x = new double[n];    
    double a,ymax,ymin,dy,lambda=0.5;
    int i,k;
    int h[30];
    
    for (i=0; i<n; i++)
    {
        while(1)
        {
            a=((double)rand() / (double)RAND_MAX);
            if (a>0) break;
        }
        x[i]=a;
        y[i]=(-1.0/lambda)*log(x[i]);
    }
 
    ymax=ymin=y[0];
    
    for (i=1; i<n; i++)
    {
        if (y[i]>ymax) ymax=y[i];
        if (y[i]<ymin) ymin=y[i];
    }
 
    dy=(ymax-ymin)/30;
    
    for (i=0; i<30; i++) h[i]=0;
    
    for (i=0; i<n; i++)
    {
        k=(int)((y[i]-ymin)/dy);
        h[k]++;
    }
 
    for (i=0; i<30; i++) 
        cout << ymin+i*dy << " " << h[i] << endl;
 
    delete [] y;
    delete [] x;
    return 0;
}