text: #pragma once
  
  #define NTAB 32
  #define IA 16807
  #define IM 2147483647
  #define IQ 127773
  #define IR 2836
  #define NDIV (1+(IM-1)/NTAB)
  #define MAX_RANDOM_RANGE 0x7FFFFFFFUL
  
  // fran1 -- return a random floating-point number on the interval [0,1)
  //
  #define AM (1.0/IM)
  #define EPS 1.2e-7
  #define RNMX (1.0-EPS)
  
  typedef unsigned char BYTE;
  
  class CUniformRandomStream
  {
  public:
  	// Sets the seed of the random number generator
  	virtual void	SetSeed(int iSeed);
  
  	// Generates random numbers
  
  	virtual float	RandomFloat(float flMinVal = 0.0f, float flMaxVal = 1.0f);
  	virtual int		RandomInt(int iMinVal, int iMaxVal);
  	virtual float	RandomFloatExp(float flMinVal = 0.0f, float flMaxVal = 1.0f, float flExponent = 1.0f);
  public:
  	int GenerateRandomNumber();
  	int m_idum;
  	int m_iy;
  	int m_iv[NTAB];
  
  	BYTE PAD0[4];
  };