## Random Number Generating

I'm given these two equations:

PDF: f(x) =1/(π(1+x^2))    -∞ ≤ x ≤ ∞                   CDF: F(x) =(1/2) + arctan(x)/π  -∞ ≤ x ≤ ∞
and I am asked to generate 10,000 random numbers using the Inversion Method for Cauchy Distribution.
Here is the code I have started:
PROC IML;
n=10000;
myran = j(n,1, 0);
uniform = uniform(myran);
exponential = (tan(uniform*pi-(pi/2)));
CREATE uniform2 FROM uniform[colname={'x'}];
APPEND FROM uniform;
CREATE exp2 FROM exponential[colname={'y'}];
APPEND FROM exponential;
QUIT;

but my log says: "ERROR: (execution) Matrix has not been set to a value." after the exponential statement.
how do I correct for this? I'm not sure how to account for the -∞ ≤ x ≤ ∞ part.
subsequently, I am asked to create a subset of the 10000 Cauchy Dist. of random numbers where -10<x<10

3 REPLIES 3

## Re: Random Number Generating

Set the scalar pi to a value after you invoke IML.

``pi = constant('pi');``  Ksharp
Super User

## Re: Random Number Generating

IML has build-in function, you can use it .

``````proc iml;
x=j(10000,1,.);
call randseed(12345678);
call randgen(x, 'CAUCHY');

create want var{x};
append;
close;
quit;``````

## Re: Random Number Generating

You asked, "how do I account for the [-infinity, infinity] part?" Here is a hint: What is the range of the expression

uniform*pi - pi/2 ?

Ask yourself how the TAN function behaves on this interval.

For more about the inverse CDF method of simulating data, see "The inverse CDF method for simulating from a distribution."

From The DO Loop