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.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.