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;
Please read Rick Wicklin's blog entry on this topic
http://blogs.sas.com/content/iml/2013/07/10/stop-using-ranuni.html
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?
Follow Rick's advice and use
data rn;
call streaminit(10);
a = rand("NORMAL");
b = a;
run;
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.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.