random seed

Reply
Occasional Contributor
Posts: 6

random seed

Why do I get different results for variable a and variable b even though I use same random seed 10 for the two variables?

 

data rn;
	a=rannor(10);
	b=rannor(10);
run;

 

Respected Advisor
Posts: 4,820

Re: random seed

Please read Rick Wicklin's blog entry on this topic

 

http://blogs.sas.com/content/iml/2013/07/10/stop-using-ranuni.html

 

 

PG
Occasional Contributor
Posts: 6

Re: random seed

[ Edited ]

Thanks, it's because in a data step, the first seed encountered will determine the whole stream, right?

Another question, then can I write

b=rannor

without assigning a seed for the second variable since whatever seed set to b would prove to be useless?

Respected Advisor
Posts: 4,820

Re: random seed

Follow Rick's advice and use

 

data rn;
	call streaminit(10);
	a = rand("NORMAL");
	b = a;
run;
PG
SAS Super FREQ
Posts: 3,630

Re: random seed

In your example, it doesn't matter what seed value you use for b. You will always get

a=0.84963 b=0.70089

 

A random number seed initializes a sequence of pseudorandom values. For the RANUNI function (and other RAN* functions), the first time you use a seed  determines the sequence for the rest of the data step.

 

Here are two related articles:

Random number seeds: Only the first seed matters

Random number streams in SAS: How do they work?

 

My mental model for a stream is this: I have a spiral notebook with thousands of sheets of papers.  On each page, I write down a sequence of random numbers.  The first sheet can have the same numbers as another sheet, but they are in different orders. 

 

The "seed" corresponds to a page. When you want a sequence of random numbers, you tell me what page you want.  I then read off the numbers on that page one at a time.  If you want a different sequence, you need to ask for a different page.

Ask a Question
Discussion stats
  • 4 replies
  • 318 views
  • 0 likes
  • 3 in conversation