N/A
Posts: 1

# Func Rannor

Hello,

I'm simulating a variable say X that follows a normal standard distribution with the rannor() function.

With n=5000, the mean of X is far from 0 and out of the prediction interval.

With 100 000 000 generated variables, the mean is near 0 but we cannot simulate such a number of variables for the rest of our work.

With R, the same simulation produces a variable with a mean less than 1.10-4 in absolute value and this with only 500 generated variables.

The same problem occurs with the normal() function.

I use SAS 9.2 with Windows 7 X64.

Do you encounter the same problem ? Is it due to SAS ?

Here is my code :

data test;

do i=1 to 10000;

Y1=rannor(-1);

Y2=normal(-1);

output;

end;

run;

proc means data=test;

var Y1 Y2;

run;

Super User
Posts: 22,839

## Re: Func Rannor

Not particularly helpful, but you can see this thread with some discussion around random numbers in SAS though they're discussing the uniform distribution instead.

http://listserv.uga.edu/cgi-bin/wa?A2=ind1204c&L=sas-l&D=0&P=19477

You can also try the rand('normal', 0, 1) function.

Posts: 5,394

## Re: Func Rannor

I get no sign of non-normality with this :

data test;
do i=1 to 10000;
Y1=rannor(-1);
Y2=normal(-1);
Y3=rand("NORMAL");
output;
end;
run;

proc univariate data=test normal;
var Y1 Y2 Y3;
run;

I'm using SAS 9.3 on Windows 7, 32 bits.

PG
Posts: 3,832

## Re: Func Rannor

If I recall correctly both of these random functions will use the same random number stream.  Use the CALL versions to have a different stream for each function.

This may be causing your problem.

SAS Super FREQ
Posts: 4,110

## Re: Func Rannor

1) RANNOR and NORMAL are the same function. NORMAL is just an alias to RANNOR.

2) A 95% confidence interval means that in 95% of random samples, the sample mean will be within the computed CI.  In terns of "seeds," this means that 95% of seeds will give a sample mean within the CI. So any single sample doesn't tell us anything. You might be "unlucky" and choose that one-in-twenty seed!

3) I am running on Windows 7 and X64 and I do not see the situation you report. Use the CLM option on the PROC MEANS statement to get PROC MEANS to display the confidence limits:

proc means data=test N mean clm;

var Y1 Y2;

run;

Discussion stats
• 4 replies
• 839 views
• 0 likes
• 5 in conversation