BookmarkSubscribeRSS Feed
Nichlas
Calcite | Level 5

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;

 

4 REPLIES 4
PGStats
Opal | Level 21

Please read Rick Wicklin's blog entry on this topic

 

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

 

 

PG
Nichlas
Calcite | Level 5

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?

PGStats
Opal | Level 21

Follow Rick's advice and use

 

data rn;
	call streaminit(10);
	a = rand("NORMAL");
	b = a;
run;
PG
Rick_SAS
SAS Super FREQ

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.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1558 views
  • 0 likes
  • 3 in conversation