[ Initial Number of Bins: {20) ] [ Initial Number of Points: {2000} ]

IMPLEMENTATION
Cauchy Distribution Method

The Cauchy distribution, also called the Lorentzian distribution, is a continous distribution describing resonance behavior.
This distribution plays an important part in physics and engineering because it is the solution to the differential equation
describing forced resonance. In spectroscopy, it describes the line shape of spectral lines which are broadened by many
mechanisms, including resonance broadening.

Probability Density Function

The probability density function for the Cauchy distribution can be written in the form:

f(x;αç) = b / π[b^{2} + (x - a] ^{2}

here, ç is the location parameter, specifying the location of the resonance peak of the distribution, and
b is the scale parameter which specifies the half width at the half maximum.

Cauchy Random Number Generator

It is possible to use the following formula, based on an inverse transformation, to create Cauchy random distribution:

Cauchy(a,b) = a + b[tan(π u(0,1) - 0.5]

Where u(0,1) is the uniform random distribution defined in the range of [0,1].

Testing the Cauchy Distribution Method

To test the Cauchy Distribution method, a new static method has been added. The TestCauchyDistribution() method has
been written and executed. No additional code is shown. The user can change variables as desired.

For the test, two parameters were set:

number of bins = 20; (nBins)
number of points = 2000; (nPoints)

where the parameter (nBins) is the number of bins in the histogram and (nPoints)
is the number of random points. A random array is created using the cauchy distribution. A comparison is made between
the histogram of random data and the theoretical probability density function of the cauchy distribution. One can see the
results from the cauchy random generator are very close to the theoretical cauchy distribution function.

Running this example generates the results shown above.

static void TestCauchyDistribution();
{
for (int i = 0; i < nBins; i++)
{
ListBox1.Items.Add(" x = " + xdata[i] + "," + " - - - - -> Random Data = " + ydata[i] + "," + " - - - - -> Density Distribution = " + Math.Round(ydistribution[i] * normalizeFactor, 0).ToString());
}
}