#ifndef GAUSS_H
#define GAUSS_H

//  headers
#include <cmath>
#include <cstdlib>
#include <lib.h>

//  definitions

//  prototypes
class rgauss
{
private:
	int n;
	float* y;

public:
	// constructor
	rgauss(int nn);

	// destructor
	~rgauss();

	// return random number with gaussian distribution.  second
	// call truncates from below, third trucates from below and above.
	float ran(float sigma);
	float ran(float sigma, float xmin);
	float ran(float sigma, float xmin, float xmax);

	// return array of numbers with gaussian distribution.  second
	// call truncates from below, third trucates from below and above.
	float* ran(float sigma, int ntot);
	float* ran(float sigma, int ntot, float xmin);
	float* ran(float sigma, int ntot, float xmin, float xmax);

	// return array of numbers with gaussian distribution.  second
	// call truncates from below, third trucates from below and above.
	// allow the possibility of saving alpha and beta for future calls.
	float* ran(
		float sigma, int ntot, float xmin, float xmax,
		float& alpha, float& beta);
};

#endif