Lindo Systems

! Illustrate Histogram feature of LINGO.  (CentralLimitTheorem.lng)
  Take a sample of NS observations, each
observation containing NU uniform random numbers.
Combine each set of size NU into a single number
using either sum, min, max, or product,
and plot the histogram using @CHARTHISTO( );
! Keywords:  Central limit theorem, Chart, ChartHisto, 
  Exponential distribution, Graph
  Histogram, LogNormal, Normal distribution;
sets:
  OBS: RESULT;
  RV: DRAW;
endsets
CALC:
  NS = 32000;   ! Number observations;
  NU = 4;       ! Number uniform random numbers in each obs.;
  UI = 0.43928; ! An initial random number seed;
  NBINS = 15;   ! Optionally specify number bins;
  OBS = 1..NS;  ! Declare set of observations;
  RV = 1..NU;   ! Declare set of vars. per obs.;
  
   @FOR( OBS( i):
      @FOR( RV(j):
	   UI = @RAND( UI); ! Get another uniform;
         DRAW(j) =  UI;
         );
  !                                         As NU gets large;
      RESULT(i) = @SUM(  RV(j): DRAW( j)); !Converges to Normal;
  !    RESULT(I) = @MIN(  RV(j): DRAW( j)); !Converges to Exponential;
  !    RESULT(I) = @PROD( RV(j): DRAW( j)); !Converges to LogNormal;
  !    RESULT(I) = @MAX(  RV(j): DRAW( j));
        );
  ! A histogram with NBINS bins;
  @CHARTHISTO( 'Sample Histogram', ! Title;
    'Based on NU uniforms', ! X axis label;
    'Frequency',            ! Y axis label;
    'Result',  ! Label for data set plotted;
     NBINS, RESULT); 
  ! If you choose NBINS = 0, then @CHARTHISTO will choose;
ENDCALC