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.
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!
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.