Util\RV.cs.
RVofGeneralPDF class generates a random number of the
uniform probability density function (PDF), the triangular PDF,
the exponential PDF, and the normal PDF as follows.
public class RVofGeneralPDF: Random
{
public RVofGeneralPDF() : base() { }
public double Uniform(double min, double max);
public double Triangular(double min, double max, double mode);
public double Exponential(double mean);
public double Normal(double mean, double sd);
}
We took a look at the use of RVofGeneralPDF in the
ping-pong example in Section 1.3.
If we want to make
an instance of a specific PDF's random variable, we can use
RV_Uniform, RV_Triangular, RV_Exponential,
and RV_Normal which are derived classes from an abstract
class, RVofPDF. The abstract function RN() of
RVofPDF is overrided in each derived class as follows.
public abstract class RVofPDF : Random
{
protected RVofPDF() : base() { }
public abstract double RN();
}
public class RV_Uniform : RVofPDF
{
protected double min, max;
public RV_Uniform(double _min, double _max): base(){...}
public override double RN(){...} // return Uniform[min,max]
}
public class RV_Triangular : RVofPDF
{
protected double min, max, mode;
public RV_Triangular(double _min, double _max, double _mode): base(){...}
public override double RN(){...} // return Triangular(min,max,mode)
}
public class RV_Exponential : RVofPDF
{
protected double mean;
public RV_Exponential(double _mean): base(){...}
public override double RN(){...} // return Exponential(mean);
}
public class RV_Normal : RVofPDF
{
protected double mean, sd;
public RV_Normal(double _mean, double sd): base(){...}
public override double RN() {...}// return Normal(mean, sd);
}
We will see the use of these PDFs in example in Section